服务端 update.json
{
“versionCode”:2,
“versionName”:”1.0.1”,
“descrption”:” 本次修改了XX等BUG,并且新增了很多新功能.”,
“downloadUrl”:”http://10.0.2.2/app1.0.1.apk”
}
public void checkUpdate(){
//功能:向服务器请求最新版本信息,如果服务器版号本高于本地版本号,
// 那么就弹出升级请求对话框,然后由用户决定是否升级。如果升级则进入后台下载
new Thread(){
@Override
public void run() {
Message msg = Message.obtain();
HttpURLConnection conn = null;
//开始网络请求
try {
//访问本机地址是用localhost,但是,模拟器与本机是用桥链接的,
// 模拟器访问本机的时候使用10.0.2.2
URL url = new URL("http://10.0.2.2/update.json");
conn = (HttpURLConnection) url.openConnection();//打开链接
conn.setRequestMethod("GET");//使用GET方式连接
conn.setConnectTimeout(5000);//设置连接超时5秒
conn.setReadTimeout(5000);//设置读取超时5秒
conn.connect();//连接
//如果响应码等于200,说明连接成功
if(conn.getResponseCode() == 200){
//创建字节数组输出流 ,用来输出读取到的内容
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//创建读取缓存,大小为1024
byte[] buffer = new byte[1024];
//每次读取长度
int len = 0;
//开始读取输入流中的文件
while( (len = inputStream.read(buffer) ) != -1){ //当等于-1说明没有数据可以读取了
byteArrayOutputStream.write(buffer,0,len); // 把读取的内容写入到输出流中
}
//把读取到的字节数组转换为字符串
String result = byteArrayOutputStream.toString();
//关闭输入流和输出流
inputStream.close();
byteArrayOutputStream.close();
//解析json
JSONObject jsonObject = new JSONObject(result);
mVersionCode = jsonObject.getInt("versionCode");
mVersionName = jsonObject.getString("versionName");
mDescrption = jsonObject.getString("descrption");
mDownloadUrl = jsonObject.getString("downloadUrl");
//判断是否有更新
if(mVersionCode>getLocationVersionCode()){
//当服务器版本大于本地版本的时候说明有更新,弹出升级提示对话框。
msg.what = CODE_UPDATE_DIALOG;
}else{
//如果没有新版本则跳转到主页面HomeActivity
msg.what = CODE_ENTER_HOME;
}
}
} catch (MalformedURLException e) {
// URL异常
msg.what = CODE_URL_ERROR;
e.printStackTrace();
} catch (IOException e) {
//网络连接异常
msg.what = CODE_NET_ERROR;
e.printStackTrace();
} catch (JSONException e) {
//json解析异常
msg.what = CODE_JSON_ERROR;
e.printStackTrace();
}finally {
mHandler.sendMessage(msg);
if(conn!=null){
conn.disconnect();
}
}
}
}.start();
}