「安卓」App版本自动更新

一、App版本自动更新的条件是服务器端的app版本大于本地app的版本,因此首先请求服务器接口拿到服务器端的app版本和本地app版本进行比较,本地app版本可以通过传入的context获取到versionName。

public static String getPackageVersion(Context ctx) {
        try {
            PackageManager e = ctx.getPackageManager();
            PackageInfo info = e.getPackageInfo(ctx.getPackageName(), 0);
            return info.versionName;
        } catch (Exception var3) {
            var3.printStackTrace();
            return "";
        }
    }

二、下载apk
若采用retrofit,DownloadProgressInterceptor可拦截下载的进度。

ownloadProgressInterceptor downloadProgress = new DownloadProgressInterceptor(new DownloadProgressInterceptor.DownloadProgressListener() {
            //bytesRead下载进度
            //contentLength文件一共多大
            //done是否下载完成
            @Override
            public void update(long bytesRead, long contentLength, boolean done) {
                if (mStateListener != null) {
                    mStateListener.onUpdateProgress(bytesRead, contentLength);
                }
            }
        });

三、安装更新后的apk

  Intent install = new Intent();
  install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  install.setAction(Intent.ACTION_VIEW);
  install.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
  context.startActivity(install);

四、删除已经下载的apk文件
在MainActivity中添加onCreate周期中,调用删除已下载的apk。

    public static void removeFile(Context context) {
        if (null != context) {
            //UPDATE_PATH是apk下载的路径
            if (null != UPDATE_PATH) {
                File downloadFile = new File(UPDATE_PATH);
                if (null != downloadFile && downloadFile.exists()) {
                        downloadFile.delete()
                        Log.d("---", "已经删除")
                    }
                }
            }
        }

五、流程图:


app版本升级.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,325评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,109评论 3 119
  • 按传统定义,免疫( Immune)指免除传染病;免疫性( Immunity)指抗感染能力。免疫学( immunol...
    春风你阅读 4,208评论 0 0
  • 试验一下
    璇磨磨阅读 1,814评论 0 0
  • 老公前天说可以给我放个假,让我出去玩一天,我也觉得有必要自己出去晃荡下,因为年前挺忙的,年后很可能又得忙,所以有必...
    苹果杨树阅读 2,312评论 0 2

友情链接更多精彩内容