qtfreet00 发表于 2016-1-6 14:58

【原创源码】安卓APP自动检查更新模块

本帖最后由 世事繁华皆成空 于 2016-1-6 16:13 编辑



采用Material Dialog设计,样式还是很美观的,为了不影响使用,在点击下载后自动在通知栏进行下载,下载完成后由用户手动去点击通知栏进行安装





云端配置



关键代码:

      CheckUpdate checkUpdate = new CheckUpdate(this); //实例化自动更新类
      checkUpdate.startCheck();

public void startCheck() {
      new Thread(new Runnable() {
            @Override
            public void run() {
               //4.0+网络请求需要在子线程中完成
                URL url;
                InputStream is;
                HttpURLConnection conn = null;
                try {
                  url = new URL(Constant.APK_URL);
                  conn = (HttpURLConnection) url.openConnection();
                  conn.setConnectTimeout(5000);
                  conn.setRequestMethod("GET");
                  is = conn.getInputStream();//网络请求
                  BufferedReader br = new BufferedReader(new InputStreamReader(is));
                  StringBuilder sb = new StringBuilder();
                  String line;
                  while ((line = br.readLine()) != null) {
                        sb.append(line);
                  }
                  LogUtils.e(sb);
                  br.close();
                  is.close();
                  Message msg = new Message();
                  msg.what = 0;
                  msg.obj = sb.toString();
                  mhandler.sendMessage(msg);         //将获取到的数据直接发消息给hanlder去处理


                } catch (MalformedURLException e) {
                  e.printStackTrace();
                } catch (IOException e) {
                  e.printStackTrace();
                } finally {
                  if (conn != null) {
                        conn.disconnect();
                  }
                }
            }
      }).start();
    }

hanlder中直接对数据进行解析

   switch (msg.what) {
                case 0:
                  try {
                        JSONObject js = new JSONObject(msg.obj.toString());
                        int version = js.getInt("version");
                        String intro = js.getString("introduction");
                        String url = js.getString("url");
                        compareVersion(version, intro, url);
                  } catch (JSONException e) {
                        e.printStackTrace();
                  }


获取当前APK版本号,这里使用的是versioncode,个人觉得比较方便,当云端版本大于当前版本时,则提示更新

private void compareVersion(int newVersion, String intro, final String url) {
      int versionCode = getVerCode(mcontext);
      LogUtils.e(versionCode);
      LogUtils.e(intro);
      LogUtils.e(url);
      if (newVersion > versionCode) {
            new MaterialDialog.Builder(mcontext)
                  .title("发现更新")
                  .content(intro)
                  .positiveText("立即更新")
                  .negativeText("退出").onPositive(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                  Intent intent = new Intent(mcontext, DownloadService.class);
                  intent.putExtra("url", url);
                  mcontext.startService(intent);


                }
            })
                  .show();

      } else {
            return;
      }


    }


    private int getVerCode(Context ctx) {
      int currentVersionCode = 0;

      PackageManager manager = ctx.getPackageManager();
      try {
            PackageInfo info = manager.getPackageInfo(ctx.getPackageName(), 0);
            currentVersionCode = info.versionCode; // 版本号
      } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
      }
      return currentVersionCode;
    }


Demo源码:
https://github.com/Qrilee/AutoCheckUpdate欢迎star

铁头张 发表于 2016-1-12 18:04

做的不错。。。还有通知栏更新提示


要是能打开软件,提示更新,并且自动更新完成就好了。。。

不怎么会Android编程。。。学着写中。。。

帅的谁爱 发表于 2016-1-6 20:49

左望丶 发表于 2016-1-6 15:04

支持 大牛,多多出好产品

520_ai_in@sina. 发表于 2016-1-6 15:21

话说楼主是女人吗

cxqdly 发表于 2016-1-6 15:33

系统更新还是APP更新

manbajie 发表于 2016-1-7 10:50

嗯,好东西的说

飞丶宇 发表于 2016-1-9 15:59

哈哈,不错不错,比我的更新后台略差一些。。。:loveliness:

wld 发表于 2016-1-18 09:56

好东西,就是现在用不上

Witheredead 发表于 2016-1-22 18:43

支持,支持
页: [1] 2
查看完整版本: 【原创源码】安卓APP自动检查更新模块