美文网首页
「安卓」App版本自动更新

「安卓」App版本自动更新

作者: 七月流火_9405 | 来源:发表于2018-06-20 23:18 被阅读0次

一、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

相关文章

网友评论

      本文标题:「安卓」App版本自动更新

      本文链接:https://www.haomeiwen.com/subject/aurfyftx.html