在平时的Android开发中,版本更新是避免不了的事情(利用跨平台热更新另算),此博文主要介绍一下版本更新时候显示app下载进度以及下载完毕后直接跳转安装界面的操作.

1. App下载与下载进度的展示

1.1 使用的下载类库,下载地址百度一下即可:

​ xUtils

1.2 代码
1.2.1 申明一下下载进度显示的控件ProgressDialog
private ProgressDialog progressDialog;
1.2.2 初始化ProgressDialog
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(false);
progressDialog.show();
1.2.3 下载方法及显示下载进度
String downloadUrl = "http://192.168.1.252:8080/TestSomething/app-release.apk";
final String apkPath = "mnt/sdcard/Download/app-release.apk";
HttpUtils httpUtils = new HttpUtils();
// xUtils的download方法传递三个参数 第一个是下载的apk地址 第二个是目标地址,也就是本地存储地址  第三个是下载情况的回调 
httpUtils.download(downloadUrl, apkPath, new RequestCallBack<File>() {
   @Override
   public void onSuccess(ResponseInfo<File> responseInfo) {
          progressDialog.dismiss();
          // 下载成功 安装
  }

   @Override
   public void onFailure(HttpException e, String s) {
          progressDialog.dismiss();
   }

   
    // total 下载的文件的总大小
    // current 当前下载过的文件大小
   @Override
   public void onLoading(long total, long current, boolean isUploading) {
         super.onLoading(total, current, isUploading);
         progressDialog.setMax((int) total);
         progressDialog.setProgress((int) current);
        }
});

至此,下载代码及下载进度显示的代码完毕..

2.下载完成后跳转安装

在下载完成的回调中添加:

@Override
   public void onSuccess(ResponseInfo<File> responseInfo) {
          progressDialog.dismiss();
          // 下载成功 安装
       Intent intent = new Intent();                               
       intent.setAction("android.intent.action.VIEW");             
       intent.addCategory("android.intent.category.DEFAULT");
       intent.setDataAndType(Uri.fromFile(new File(apkPath)), "application/vnd.android.package-archive");
       startActivity(intent);
  }