Android核心基础(四)
1、联系人表结构
添加一条联系人信息
packagecom.itheima.insertcontact;
importandroid.app.Activity;
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.view.View;
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidclick(Viewview){
//1.在raw_contact表里面添加一条联系人的id
Uriuri=Uri.parse("content://com.android.contacts/raw_contacts");
Cursorcursor=getContentResolver().query(uri,newString[]{"_id"},null,null,null);
cursor.moveToLast();
int_id=cursor.getInt(0);
intnewid=_id+1;
ContentValuesvalues=newContentValues();
values.put("contact_id",newid);
getContentResolver().insert(uri,values);
//2.根据联系人的id在data表里面添加对应的数据
UridataUri=Uri.parse("content://com.android.contacts/data");
//插入电话
ContentValuesphoneValues=newContentValues();
phoneValues.put("data1","999999");
phoneValues.put("mimetype","vnd.android.cursor.item/phone_v2");
phoneValues.put("raw_contact_id",newid);
getContentResolver().insert(dataUri,phoneValues);
//插入邮箱
ContentValuesemailValues=newContentValues();
emailValues.put("data1","zhaoqi@itheima.com");
emailValues.put("mimetype","vnd.android.cursor.item/email_v2");
emailValues.put("raw_contact_id",newid);
getContentResolver().insert(dataUri,emailValues);
//插入姓名
ContentValuesnameValues=newContentValues();
nameValues.put("data1","zhaoqi");
nameValues.put("mimetype","vnd.android.cursor.item/name");
nameValues.put("raw_contact_id",newid);
getContentResolver().insert(dataUri,nameValues);
}
}
读取联系人
packagecom.itheima.readcontacts.service;
importjava.util.ArrayList;
importjava.util.List;
importandroid.content.ContentResolver;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.net.Uri;
importcom.itheima.readcontacts.domain.ContactInfo;
publicclassContactInfoService{
/**
*获取手机里面全部的联系人信息
*@return
*/
publicstaticList<ContactInfo>getContactInfos(Contextcontext){
ContentResolverresolver=context.getContentResolver();
Uriuri=Uri.parse("content://com.android.contacts/raw_contacts");
UridataUri=Uri.parse("content://com.android.contacts/data");
List<ContactInfo>contactInfos=newArrayList<ContactInfo>();
Cursorcursor=resolver.query(uri,newString[]{"contact_id"},null,null,null);
while(cursor.moveToNext()){
Stringcontact_id=cursor.getString(0);
System.out.println("联系人id:"+contact_id);
//根据联系人的id查询data表里面的数据
CursordataCursor=resolver.query(dataUri,newString[]{"data1","mimetype"},"raw_contact_id=?",newString[]{contact_id},null);
ContactInfocontactInfo=newContactInfo();
while(dataCursor.moveToNext()){
Stringdata1=dataCursor.getString(0);
Stringmimetype=dataCursor.getString(1);
if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
contactInfo.setPhone(data1);
}elseif("vnd.android.cursor.item/email_v2".equals(mimetype)){
contactInfo.setEmail(data1);
}elseif("vnd.android.cursor.item/name".equals(mimetype)){
contactInfo.setName(data1);
}
}
dataCursor.close();
contactInfos.add(contactInfo);
}
cursor.close();
returncontactInfos;
}
}
2、从Internet获取数据
利用HttpURLConnection对象,我们可以从网络中获取网页数据.
URLurl=newURL("http://www.sohu.com");
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);//设置连接超时
conn.setRequestMethod(“GET”);//以get方式发起请求
if(conn.getResponseCode()!=200)thrownewRuntimeException("请求url失败");
InputStreamis=conn.getInputStream();//得到网络返回的输入流
Stringresult=readData(is,"GBK");
conn.disconnect();
//第一个参数为输入流,第二个参数为字符集编码
publicstaticStringreadData(InputStreaminSream,StringcharsetName)throwsException{
ByteArrayOutputStreamoutStream=newByteArrayOutputStream();
byte[]buffer=newbyte[1024];
intlen=-1;
while((len=inSream.read(buffer))!=-1){
outStream.write(buffer,0,len);
}
byte[]data=outStream.toByteArray();
outStream.close();
inSream.close();
returnnewString(data,charsetName);
}
<!--访问internet权限-->
<uses-permissionandroid:name="android.permission.INTERNET"/>
利用HttpURLConnection对象,我们可以从网络中获取文件数据.
URLurl=newURL("http://photocdn.sohu.com/20100125/Img269812337.jpg");
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()!=200)thrownewRuntimeException("请求url失败");
InputStreamis=conn.getInputStream();
readAsFile(is,"Img269812337.jpg");
publicstaticvoidreadAsFile(InputStreaminSream,Filefile)throwsException{
FileOutputStreamoutStream=newFileOutputStream(file);
byte[]buffer=newbyte[1024];
intlen=-1;
while((len=inSream.read(buffer))!=-1){
outStream.write(buffer,0,len);
}
outStream.close();
inSream.close();
}
3、向Internet发送请求参数
StringrequestUrl="http://localhost:8080/itcast/contanctmanage.do";
Map<String,String>requestParams=newHashMap<String,String>();
requestParams.put("age","12");
requestParams.put("name","中国");
StringBuilderparams=newStringBuilder();
for(Map.Entry<String,String>entry:requestParams.entrySet()){
params.append(entry.getKey());
params.append("=");
params.append(URLEncoder.encode(entry.getValue(),"UTF-8"));
params.append("&");
}
if(params.length()>0)params.deleteCharAt(params.length()-1);
byte[]data=params.toString().getBytes();
URLrealUrl=newURL(requestUrl);
HttpURLConnectionconn=(HttpURLConnection)realUrl.openConnection();
conn.setDoOutput(true);//发送POST请求必须设置允许输出
conn.setUseCaches(false);//不使用Cache
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection","Keep-Alive");//维持长连接
conn.setRequestProperty("Charset","UTF-8");
conn.setRequestProperty("Content-Length",String.valueOf(data.length));
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
DataOutputStreamoutStream=newDataOutputStream(conn.getOutputStream());
outStream.write(data);
outStream.flush();
if(conn.getResponseCode()==200){
Stringresult=readAsString(conn.getInputStream(),"UTF-8");
outStream.close();
System.out.println(result);
}
4、向Internet发送xml数据
利用HttpURLConnection对象,我们可以向网络发送xml数据.
StringBuilderxml=newStringBuilder();
xml.append("<?xmlversion=\"1.0\"encoding=\"utf-8\"?>");
xml.append("<M1V=10000>");
xml.append("<UI=1D=\"N73\">中国</U>");
xml.append("</M1>");
byte[]xmlbyte=xml.toString().getBytes("UTF-8");
URLurl=newURL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setDoOutput(true);//允许输出
conn.setUseCaches(false);//不使用Cache
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection","Keep-Alive");//维持长连接
conn.setRequestProperty("Charset","UTF-8");
conn.setRequestProperty("Content-Length",String.valueOf(xmlbyte.length));
conn.setRequestProperty("Content-Type","text/xml;charset=UTF-8");
DataOutputStreamoutStream=newDataOutputStream(conn.getOutputStream());
outStream.write(xmlbyte);//发送xml数据
outStream.flush();
if(conn.getResponseCode()!=200)thrownewRuntimeException("请求url失败");
InputStreamis=conn.getInputStream();//获取返回数据
Stringresult=readAsString(is,"UTF-8");
outStream.close();
5、网络图片查看器
packagecom.ithiema.newimageviewer;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.text.TextUtils;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.ImageView;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
protectedstaticfinalintGET_IMAGE_SUCCESS=1;
protectedstaticfinalintSERVER_ERROR=2;
protectedstaticfinalintLOAD_IMAGE_ERROR=3;
privateImageViewiv_icon;
privateEditTextet_path;
/**
*在主线程创建一个消息处理器
*/
privateHandlerhandler=newHandler(){
//处理消息的运行在主线程里面
@Override
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
switch(msg.what){
caseGET_IMAGE_SUCCESS:
Bitmapbm=(Bitmap)msg.obj;
iv_icon.setImageBitmap(bm);
break;
caseSERVER_ERROR:
Toast.makeText(MainActivity.this,"连接服务器错误",0).show();
break;
caseLOAD_IMAGE_ERROR:
Toast.makeText(MainActivity.this,"获取图片错误",0).show();
break;
}
}
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_icon=(ImageView)findViewById(R.id.iv_icon);
et_path=(EditText)findViewById(R.id.et_path);
getMainLooper();
}
publicvoidclick(Viewview){
finalStringpath=et_path.getText().toString().trim();
if(TextUtils.isEmpty(path)){
Toast.makeText(this,"路径不能为空",0).show();
return;
}else{
newThread(){
publicvoidrun(){
//以httpget的方式请求数据.获取图片的流
try{
URLurl=newURL(path);
HttpURLConnectionconn=(HttpURLConnection)url
.openConnection();
//设置请求方式
conn.setRequestMethod("GET");
//设置连接超时时间
conn.setConnectTimeout(3000);
conn.setRequestProperty(
"User-Agent",
"Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;Shuame)Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;Shuame)");
//获取服务器端返回的状态码
intcode=conn.getResponseCode();
if(code==200){
//获取服务器端返回的流
InputStreamis=conn.getInputStream();
Bitmapbitmap=BitmapFactory.decodeStream(is);
//iv_icon.setImageBitmap(bitmap);
//不可以直接更新界面,发送消息更新界面
Messagemsg=newMessage();
msg.obj=bitmap;
msg.what=GET_IMAGE_SUCCESS;
handler.sendMessage(msg);
}else{
//Toast.makeText(MainActivity.this,"连接服务器错误",0).show();
Messagemsg=newMessage();
msg.what=SERVER_ERROR;
handler.sendMessage(msg);
}
}catch(Exceptione){
e.printStackTrace();
//Toast.makeText(getApplicationContext(),"获取图片失败",0).show();
Messagemsg=newMessage();
msg.what=LOAD_IMAGE_ERROR;
handler.sendMessage(msg);
}
};
}.start();
}
}
}
6、HTML源代码查看器
packagecom.itheima.htmlviewer;
importjava.io.ByteArrayOutputStream;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.text.TextUtils;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.TextView;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
protectedstaticfinalintGET_HTML_FINISH=1;
protectedstaticfinalintLOAD_ERROR=2;
privateTextViewtv_html;
privateEditTextet_path;
privateHandlerhandler=newHandler(){
publicvoidhandleMessage(android.os.Messagemsg){
switch(msg.what){
caseGET_HTML_FINISH:
Stringhtml=(String)msg.obj;
tv_html.setText(html);
break;
caseLOAD_ERROR:
Toast.makeText(getApplicationContext(),"获取html失败",0).show();
break;
}
};
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_html=(TextView)findViewById(R.id.tv_html);
et_path=(EditText)findViewById(R.id.et_path);
}
publicvoidclick(Viewview){
finalStringpath=et_path.getText().toString().trim();
if(TextUtils.isEmpty(path)){
Toast.makeText(this,"路径不能为空",0).show();
}else{
newThread(){
publicvoidrun(){
try{
URLurl=newURL(path);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(3000);
intcode=conn.getResponseCode();
if(code==200){
InputStreamis=conn.getInputStream();
ByteArrayOutputStreambos=newByteArrayOutputStream();
intlen=0;
byte[]buffer=newbyte[1024];
while((len=is.read(buffer))!=-1){
bos.write(buffer,0,len);
}
is.close();
Stringhtml=newString(bos.toByteArray(),"gbk");
Messagemsg=newMessage();
msg.what=GET_HTML_FINISH;
msg.obj=html;
handler.sendMessage(msg);
}else{
Messagemsg=newMessage();
msg.what=LOAD_ERROR;
handler.sendMessage(msg);
}
}catch(Exceptione){
Messagemsg=newMessage();
msg.what=LOAD_ERROR;
handler.sendMessage(msg);
e.printStackTrace();
}
};
}.start();
}
}
}
7、模拟网络登录
packagecom.itheima.login;
importcom.itheima.login.service.LoginService;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.app.Activity;
importandroid.text.TextUtils;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.CheckBox;
importandroid.widget.EditText;
importandroid.widget.Toast;
/**
*activity实际上是上下文的一个子类
*@authorAdministrator
*
*/
publicclassMainActivityextendsActivity{
protectedstaticfinalintLOGIN=1;
protectedstaticfinalintERROR=2;
privateEditTextet_username;
privateEditTextet_password;
privateCheckBoxcb_remeber_pwd;
privateHandlerhandler=newHandler(){
publicvoidhandleMessage(android.os.Messagemsg){
switch(msg.what){
caseLOGIN:
Stringinfo=(String)msg.obj;
Toast.makeText(getApplicationContext(),info,0).show();
break;
caseERROR:
Toast.makeText(getApplicationContext(),"连接网络失败...",0).show();
break;
}
};
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb_remeber_pwd=(CheckBox)findViewById(R.id.cb_remeber_pwd);
et_username=(EditText)findViewById(R.id.et_username);
et_password=(EditText)findViewById(R.id.et_password);
try{
Stringresult=LoginService.readUserInfoFromFile(this);
String[]infos=result.split("##");
et_username.setText(infos[0]);
et_password.setText(infos[1]);
}catch(Exceptione){
e.printStackTrace();
}
}
/**
*登陆按钮的点击事件
*@paramview
*/
publicvoidlogin(Viewview){
finalStringusername=et_username.getText().toString().trim();
finalStringpassword=et_password.getText().toString().trim();
if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(),"用户名或者密码不能为空",0).show();
return;
}
//检查是否勾选了cb
if(cb_remeber_pwd.isChecked()){//记住密码
try{
LoginService.saveUserInfoToFile(this,username,password);
Toast.makeText(this,"保存用户名密码成功",0).show();
}catch(Exceptione){
e.printStackTrace();
Toast.makeText(getApplicationContext(),"保存用户名密码失败",0).show();
}
}
newThread(){
publicvoidrun(){
//登陆到服务器,发送一个httpget的请求
try{
Stringresult=LoginService.loginByHttpClientPost(username,password);
Messagemsg=newMessage();
msg.what=LOGIN;
msg.obj=result;
handler.sendMessage(msg);
}catch(Exceptione){
e.printStackTrace();
Messagemsg=newMessage();
msg.what=ERROR;
handler.sendMessage(msg);
}
};
}.start();
}
}
packagecom.itheima.login.service;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
importjava.net.URLEncoder;
importjava.util.ArrayList;
importjava.util.List;
importorg.apache.http.HttpResponse;
importorg.apache.http.NameValuePair;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpGet;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importandroid.content.Context;
importcom.itheima.login.utils.StreamUtils;
/**
*登陆相关的服务
*
*@authorAdministrator
*
*/
publicclassLoginService{
//上下文其实提供了应用程序的一个详细的环境信息.包括包名是什么/data/data/目录在哪里.
//wedochickenright
/**
*保存用户信息到文件
*
*@paramusername
*用户名
*@parampassword
*密码
*/
publicstaticvoidsaveUserInfoToFile(Contextcontext,Stringusername,
Stringpassword)throwsException{
//Filefile=newFile("/data/data/com.itheima.login/info.txt");
//Filefile=newFile(context.getFilesDir(),"info.txt");//在当前应用程序的目录下
//创建一个files目录里面有一个文件info.txt
//FileOutputStreamfos=newFileOutputStream(file);
FileOutputStreamfos=context.openFileOutput("info.txt",
Context.MODE_PRIVATE);//追加模式
//zhangsan##123456
fos.write((username+"##"+password).getBytes());
fos.close();
}
/**
*读取用户的用户名和密码
*
*@return//zhangsan##123456
*/
publicstaticStringreadUserInfoFromFile(Contextcontext)throwsException{
Filefile=newFile(context.getFilesDir(),"info.txt");
FileInputStreamfis=newFileInputStream(file);
BufferedReaderbr=newBufferedReader(newInputStreamReader(fis));
Stringline=br.readLine();
fis.close();
br.close();
returnline;
}
/**
*采用http的get方式提交数据到服务器
*
*@return
*/
publicstaticStringloginByHttpGet(Stringusername,Stringpassword)
throwsException{
//http://localhost:8080/web/LoginServlet?username=zhangsan&password=123
Stringpath="http://192.168.1.100:8080/web/LoginServlet?username="
+URLEncoder.encode(username,"UTF-8")+"&password="
+URLEncoder.encode(password,"utf-8");
URLurl=newURL(path);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
intcode=conn.getResponseCode();
if(code==200){
InputStreamis=conn.getInputStream();
//把is里面的内容转化成string文本.
Stringresult=StreamUtils.readStream(is);
returnresult;
}else{
returnnull;
}
}
/**
*采用http的post方式提交数据到服务器
*
*@return
*/
publicstaticStringloginByHttpPost(Stringusername,Stringpassword)
throwsException{
//1.提交的地址
Stringpath="http://192.168.1.100:8080/web/LoginServlet";
URLurl=newURL(path);
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
//2.请求方式
conn.setRequestMethod("POST");
//准备数据
//username=zhangsan&password=123
Stringdata="username="+URLEncoder.encode(username,"UTF-8")
+"&password="+URLEncoder.encode(password,"UTF-8");
//3.注意:一定要设置请求头参数
//设置数据是一个form表单的类型
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length",data.length()+"");
conn.setConnectTimeout(5000);
//4.post请求实际上是把数据以流的方式写给了服务器
//设置允许通过http请求向服务器写数据
conn.setDoOutput(true);
//得到一个向服务写数据的流
OutputStreamos=conn.getOutputStream();
os.write(data.getBytes());
intcode=conn.getResponseCode();
if(code==200){
InputStreamis=conn.getInputStream();
//把is里面的内容转化成string文本.
Stringresult=StreamUtils.readStream(is);
returnresult;
}else{
returnnull;
}
}
publicstaticStringloginByHttpClientGet(Stringusername,Stringpassword)
throwsException{
//1.打开一个浏览器
HttpClientclient=newDefaultHttpClient();
//2.输入地址
Stringpath="http://192.168.1.100:8080/web/LoginServlet?username="
+URLEncoder.encode(username,"UTF-8")+"&password="
+URLEncoder.encode(password,"utf-8");
HttpGethttpGet=newHttpGet(path);
//3.敲回车
HttpResponseresponse=client.execute(httpGet);
intcode=response.getStatusLine().getStatusCode();
if(code==200){
InputStreamis=response.getEntity().getContent();
//把is里面的内容转化成string文本.
Stringresult=StreamUtils.readStream(is);
returnresult;
}else{
returnnull;
}
}
/**
*采用httpclient的post方式提交数据到服务器
*@paramusername
*@parampassword
*@return
*@throwsException
*/
publicstaticStringloginByHttpClientPost(Stringusername,Stringpassword)
throwsException{
//1.打开一个浏览器
HttpClientclient=newDefaultHttpClient();
//2.输入地址
Stringpath="http://192.168.1.100:8080/web/LoginServlet";
HttpPosthttpPost=newHttpPost(path);
//设置要提交的数据实体
List<NameValuePair>parameters=newArrayList<NameValuePair>();
parameters.add(newBasicNameValuePair("username",username));
parameters.add(newBasicNameValuePair("password",password));
UrlEncodedFormEntityentity= newUrlEncodedFormEntity(parameters,"UTF-8");
httpPost.setEntity(entity);
//3.敲回车
HttpResponseresponse=client.execute(httpPost);
intcode=response.getStatusLine().getStatusCode();
if(code==200){
InputStreamis=response.getEntity().getContent();
//把is里面的内容转化成string文本.
Stringresult=StreamUtils.readStream(is);
returnresult;
}else{
returnnull;
}
}
}
packagecom.itheima.login.utils;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
publicclassStreamUtils{
/**
*用默认码表转化一个inputstream里面的内容到字符串
*@paramis
*@return
*/
publicstaticStringreadStream(InputStreamis){
try{
ByteArrayOutputStreambos=newByteArrayOutputStream();
intlen=0;
byte[]buffer=newbyte[1024];
while((len=is.read(buffer))!=-1){
bos.write(buffer,0,len);
}
is.close();
returnnewString(bos.toByteArray());
}catch(IOExceptione){
e.printStackTrace();
return"";
}
}
}
8、SmartImageView网络图片查看器
packagecom.ithiema.newimageviewer;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.URL;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.text.TextUtils;
importandroid.view.View;
importandroid.widget.EditText;
importandroid.widget.ImageView;
importandroid.widget.Toast;
publicclassMainActivityextendsActivity{
protectedstaticfinalintGET_IMAGE_SUCCESS=1;
protectedstaticfinalintSERVER_ERROR=2;
protectedstaticfinalintLOAD_IMAGE_ERROR=3;
privateImageViewiv_icon;
privateEditTextet_path;
/**
*在主线程创建一个消息处理器
*/
privateHandlerhandler=newHandler(){
//处理消息的运行在主线程里面
@Override
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
switch(msg.what){
caseGET_IMAGE_SUCCESS:
Bitmapbm=(Bitmap)msg.obj;
iv_icon.setImageBitmap(bm);
break;
caseSERVER_ERROR:
Toast.makeText(MainActivity.this,"连接服务器错误",0).show();
break;
caseLOAD_IMAGE_ERROR:
Toast.makeText(MainActivity.this,"获取图片错误",0).show();
break;
}
}
};
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_icon=(ImageView)findViewById(R.id.iv_icon);
et_path=(EditText)findViewById(R.id.et_path);
getMainLooper();
}
publicvoidclick(Viewview){
finalStringpath=et_path.getText().toString().trim();
if(TextUtils.isEmpty(path)){
Toast.makeText(this,"路径不能为空",0).show();
return;
}else{
newThread(){
publicvoidrun(){
//以httpget的方式请求数据.获取图片的流
try{
URLurl=newURL(path);
HttpURLConnectionconn=(HttpURLConnection)url
.openConnection();
//设置请求方式
conn.setRequestMethod("GET");
//设置连接超时时间
conn.setConnectTimeout(3000);
conn.setRequestProperty(
"User-Agent",
"Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;Shuame)Mozilla/4.0(compatible;MSIE8.0;WindowsNT5.1;Trident/4.0;.NET4.0C;.NET4.0E;.NETCLR2.0.50727;.NETCLR3.0.4506.2152;.NETCLR3.5.30729;Shuame)");
//获取服务器端返回的状态码
intcode=conn.getResponseCode();
if(code==200){
//获取服务器端返回的流
InputStreamis=conn.getInputStream();
Bitmapbitmap=BitmapFactory.decodeStream(is);
//iv_icon.setImageBitmap(bitmap);
//不可以直接更新界面,发送消息更新界面
Messagemsg=newMessage();
msg.obj=bitmap;
msg.what=GET_IMAGE_SUCCESS;
handler.sendMessage(msg);
}else{
//Toast.makeText(MainActivity.this,"连接服务器错误",0).show();
Messagemsg=newMessage();
msg.what=SERVER_ERROR;
handler.sendMessage(msg);
}
}catch(Exceptione){
e.printStackTrace();
//Toast.makeText(getApplicationContext(),"获取图片失败",0).show();
Messagemsg=newMessage();
msg.what=LOAD_IMAGE_ERROR;
handler.sendMessage(msg);
}
};
}.start();
}
}
}
9、AsyncHttp登录
packagecom.itheima.login;
importjava.net.URLEncoder;
importcom.loopj.android.http.AsyncHttpClient;
importcom.loopj.android.http.AsyncHttpResponseHandler;
importcom.loopj.android.http.RequestParams;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.app.Activity;
importandroid.text.TextUtils;
importandroid.view.Menu;
importandroid.view.View;
importandroid.widget.CheckBox;
importandroid.widget.EditText;
importandroid.widget.Toast;
/**
*activity实际上是上下文的一个子类
*
*@authorAdministrator
*
*/
publicclassMainActivityextendsActivity{
privateEditTextet_username;
privateEditTextet_password;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username=(EditText)findViewById(R.id.et_username);
et_password=(EditText)findViewById(R.id.et_password);
}
/**
*GET登陆按钮的点击事件
*
*@paramview
*/
publicvoidlogin(Viewview){
finalStringusername=et_username.getText().toString().trim();
finalStringpassword=et_password.getText().toString().trim();
if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(),"用户名或者密码不能为空",0).show();
return;
}
Stringpath="http://192.168.1.100:8080/web/LoginServlet?username="
+URLEncoder.encode(username)+"&password="
+URLEncoder.encode(password);
AsyncHttpClientclient=newAsyncHttpClient();
client.get(path,newAsyncHttpResponseHandler(){
@Override
publicvoidonSuccess(Stringresponse){
Toast.makeText(getApplicationContext(),response,0).show();
}
});
}
/**
*POST登陆按钮的点击事件
*
*@paramview
*/
publicvoidpostLogin(Viewview){
finalStringusername=et_username.getText().toString().trim();
finalStringpassword=et_password.getText().toString().trim();
if(TextUtils.isEmpty(username)||TextUtils.isEmpty(password)){
Toast.makeText(getApplicationContext(),"用户名或者密码不能为空",0).show();
return;
}
Stringpath="http://192.168.1.100:8080/web/LoginServlet";
AsyncHttpClientclient=newAsyncHttpClient();
RequestParamsparams=newRequestParams();
params.put("username",username);
params.put("password",password);
client.post(path,params,newAsyncHttpResponseHandler(){
@Override
publicvoidonSuccess(Stringcontent){
super.onSuccess(content);
Toast.makeText(getApplicationContext(),content,0).show();
}
});
}
}
更多相关文章
- Android 在桌面创建一个快捷方式
- Android的jni下c与java数据互传测试代码
- android ListView内数据的动态添加与删除
- Android——百度APIstore+Json——获取新闻频道+新闻数据
- Android studio 032 java Tomcat Servlet 搭建服务器
- Android使用自带JSONObject解析JSON数据