Android实现自动更新功能
Android自动更新的功能可以使用第三方的SDK来实现,但是类似友盟,就不支持x86手机的自动更新,科大讯飞,弹窗是全局的,小米手机就会默认把弹窗权限关掉不允许弹出提示框,还要用户手动开启才行,如果我们自己有服务器,也可以自己来实现自动更新功能
步骤
我们把要更新的新的apk版本上传到我们的服务器,后台暴露一个接口,可以给我返回版本号,更新时间,更新描述,下载地址等信息,就够了,我们根据版本号判断应用是否有更新,如果有更新,下载新的APK,然后提示安装就可以了。
效果图
下载APK
/**
* 下载新的APK
*/
protected void downloadNewApk() {
// 下载地址
String apkurl = "http://resource.bitmain.com/wallet%2Fbmwallet.apk";
HttpUtils httpUtils = new HttpUtils();
httpUtils.download(apkurl, Environment.getExternalStorageDirectory().getPath() + "/bmwallet.apk", new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> arg0) {
// 下载成功
Toast.makeText(mContext, "下载成功", Toast.LENGTH_SHORT).show();
// 安装APK
installApk();
}
@Override
public void onFailure(HttpException e, String arg1) {
// 下载失败
Toast.makeText(mContext, "下载失败", Toast.LENGTH_SHORT).show();
// 打印异常信息
e.printStackTrace();
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
// TODO 显示下载进度
}
});
}
提示安装APK
/**
* 安装APK 打开系统的API安装APK
*/
protected void installApk() {
// 调用系统API安装APK
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getPath() + "/bmwallet.apk")), "application/vnd.android.package-archive");
mContext.startActivity(intent);
}