Android学习笔记(App检测升级)

服务端 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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值