android8以上的版本安装apk的时候需要注意获取是否安装未知来源应用的权限,但是在android11上又有变更了。
先说问题:android11 从自己的app跳转到”安装未知来源应用“权限页面之后,打开权限,返回的时候crash了,根本就跳不回自己的app
本来以为android11的相关行为又更改了,查阅了很多博客资料,都没有找到相关的说明,咨询了技术群里的朋友也未找到答案,后来偶然间把获取权限的步骤跳过了,直接安装,发现竟然成功了,特此记录,测试的app的版本如下
compileSdkVersion 29 buildToolsVersion "29.0.2"
自己在android11的真机以及模拟器,android10的模拟器上测试过,已经通过
大概逻辑如下
if (requestCode == 10086) { if (Build.VERSION.SDK_INT > 29) { InstallApkUtils.installApk(this, mAPKfile); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean haveInstallPermission = getPackageManager().canRequestPackageInstalls(); if (haveInstallPermission) { if (mAPKfile != null) { //执行安装流程 InstallApkUtils.installApk(this, mAPKfile); } else { if (mAPKfile.exists()) { //执行安装流程 InstallApkUtils.installApk(BaseActivity.this, mAPKfile); } } } } else { if (mAPKfile != null) { //执行安装流程 InstallApkUtils.installApk(this, mAPKfile); } } }
现在不确定api>29的时候是不是也是这样,如果有做过相关测试的,或者有问题,请大家指正