android 版本更新及akp安装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_39347584/article/details/99634968

首先我们先看一下整体的逻辑思路

版本检测

  1. 从服务器获取版本信息 ;
  2. 获取本地的版本信息;
  3. 本地与服务器的信息相比较;

更新

  1. 如果服务器中的版本大于本地的话那么我们就需要更新了;
  2. 弹框提示(根据项目需要);
  3. 开启线程url(服务器会反给你的)下载新的apk;

安装

  1. 安装这里就是有个路径问题,根据自己的项目需求就行,还
    有就是大家别忘了添加一个访问内存的权限就行;

话不多说直接上代码

首先大家依赖一下: ‘com.allenliu.versionchecklib:library:2.0.5’
它里面已经写好了我们直接用就可以了,以后有更好的再给大家推荐
(用什么都是可以的 思路都是一样的)

        /**
         * 获取apk的版本号 currentVersionCode
         */
        private void showUpdaloadDialog(final String downloadUrl) {

            builder = AllenVersionChecker
                    .getInstance()
                    .requestVersion()
                    .setRequestUrl("")
                    .request(new RequestVersionListener() {
                        @Nullable
                        @Override
                        public UIData onRequestVersionSuccess(String result) {
//                        Toast.makeText(context, "request successful", Toast.LENGTH_SHORT).show();
                            return crateUIData(downloadUrl);
                        }

                        @Override
                        public void onRequestVersionFailure(String message) {
//                        Toast.makeText(context, "request failed", Toast.LENGTH_SHORT).show();

                        }
                    });
            builder.setDirectDownload(true);
            builder.setShowNotification(true);
            builder.setShowDownloadingDialog(false);
            builder.setShowDownloadFailDialog(false);
            //自定义下载路径
            builder.setDownloadAPKPath(Environment.getExternalStorageDirectory() + "/ALLEN/AllenVersionPath2/");

            builder.excuteMission(context);
        }

下面是弹框提示

        private UIData crateUIData(String downloadUrl) {
            UIData uiData = UIData.create();
            uiData.setDownloadUrl(downloadUrl);
            //标题
            uiData.setTitle(context.getString(R.string.update_title));
            内容
            uiData.setContent(context.getString(R.string.updatecontent));
            return uiData;
        }

图文流程

Mon 06 Mon 13 Mon 20 版本检测 更新 安装apk 删除旧包 流程 版本更新流程图

到这里就结束了,如有不对的地方欢迎大家指出交流学习!

猜你喜欢

转载自blog.csdn.net/weixin_39347584/article/details/99634968