一、版本升级
// 8.0以上系统调用安装应用
public void startInstallApk(String apkName) {
if (Build.VERSION.SDK_INT >= 26) {
boolean hasInstallPermission = getPackageManager().canRequestPackageInstalls();
if (!hasInstallPermission) {
//注意这个是8.0新API
Uri packageURI = Uri.parse("package:" + getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 10025);
}
else {
installApk(apkName);
}
}
else {
installApk(apkName);
}
}
// 8.0以下系统安装应用
public void installApk(String apkName) {
FileUtils mFileUtils = new FileUtils();
Uri mUri;
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
//7.0系统开始认为直接使用本地Uri是不安全的 所以以FileProvider共享给外部提高安全性
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + BuildConfig.ProviderSuffix, mFileUtils.getApksFile(apkName));
} else {
mUri = Uri.fromFile(mFileUtils.getApksFile(shortCutName));
}
//添加这一句表示对目标应用临时授权该Uri所代表的文件
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(mUri,
"application/vnd.android.package-archive");
startActivity(intent);
}// 8.0以上系统调用安装应用
public void start