最近做app版本更新,把更新的大概流程总结和大家分享下
1.首先我们要获取当前app的版本
PackageManager packManager = getPackageManager();
PackageInfo info = null;
try {
info = packManager.getPackageInfo(getPackageName(), 0);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
//当前app的版本
info.versionCode
2.通过当前的版本 和最新的版本对比 如果不相等就通过Dialog提示下用户
Dialog参照http://blog.csdn.net/qq_32070651/article/details/52447257
俩个版本不同的话 就通过google 的 DownloadManager 来下载文件
DownloadManager manager = (DownloadManager) getSystemService(c.DOWNLOAD_SERVICE);
//注意 这里的url就是请求地址 如:http://****.****.com/index.php/Api/Initialize/downloadNewVersionMember
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType("application/vnd.android.package-archive");
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "***.apk");
manager .enqueue(request);
3.然后注册广播 过滤 android.intent.action.DOWNLOAD_COMPLETE
<receiver android:name="***.*****.****.activity.broadcasts.MyBroadCast" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>
4.在广播的onReceive写 安装app
@Override
public void onReceive(Context context, Intent intent) {
intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/***.apk")),
"application/vnd.android.package-archive");
context.startActivity(intent);
}
注意:如果文件不存在 在安装的时候会报解析错误