在平时的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);
}