apk内部自动更新,下载apk后安装apk的逻辑,优点就是安装过程中,不会回退到桌面(有闪退的效果,其实不是闪退,是APP原来的进程被杀死了),安装完成后能显示完成和打开,且适配安卓7.0
//安装下载后的apk文件
public static void install(final Context cxt, final File file) {
if (file != null && file.exists()) {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri contentUri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
contentUri = FileProvider.getUriForFile(cxt, cxt.getPackageName() + ".provider", file);
} else {
contentUri = Uri.fromFile(file);
}
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (cxt.getPackageManager().queryIntentActivities(intent, 0).size() > 0) {
cxt.startActivity(intent);
}
} else {//文件为空或者不存在
try {
ToastUtils.show(cxt, cxt.getString(R.string.file_not_exist));
} catch (Exception e) {
e.printStackTrace();
}
}
}