注意事项:
6.0及以下用context.getFilesDir().getPath()或者context.getCacheDir().getPath();安装都会报Apk文件不正确,无法正常打开;
7.0及以上没有问题。
installApkO(8.0 需要判断是否允许了安装未知来源应用的权限)
private void installApkO(Context context, String downloadApkPath) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//是否有安装位置来源的权限
boolean haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if (haveInstallPermission) {
KLog.i("8.0手机已经拥有安装未知来源应用的权限,直接安装!");
installApk(context, downloadApkPath);
} else {
final AlertDialog.Builder normalDialog = new AlertDialog.Builder(MainActivity.this);
normalDialog.setTitle("权限申请");
normalDialog.setMessage("安装应用需要打开安装未知来源应用权限,请去设置中开启权限!");
normalDialog.setPositiveButton("去设置",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Uri packageUri = Uri.parse("package:" + getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageUri);
startActivityForResult(intent, 10086);
}
});
normalDialog.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override