最近对应用作了8.0适配,主要是对容许未知来源应用的安装作了适配。到目前为止8.0系统之后,设置里面再也找不到了容许未知来源安装的开关,由于goole不但愿一次受权终身使用,这对一些恶意软件可让用户知情,在安全上作了优化。那咱们看看如今8.0是怎么作的操做,8.0之后,应用内升级安装应用,都必须去容许未知来源应用安装打开开关,而后才能进行安装。android
获取到本应用是否容许未知来源安装api
true 能够进行安装,false 须要进行申请权限,申请容许未知来源应用安装和咱们往常申请特殊权限不同,申请这个权限须要跳转到相应的权限容许页面进行申请,不然没法安装应用,获得官方应用商店才能对应用进行升级。安全
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
复制代码
申请容许未知来源应用安装bash
@RequiresApi(api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity() {
Uri packageURI = Uri.parse("package:"+this.getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
startActivityForResult(intent, REQUEST_UPDATE_PERMISSION_CODE);
}
复制代码
必须加上packageURI,否则只能跳转到权限管理列表,那样对回调没法处理。ide
最后咱们要在onActivityResult()方法中进行是否容许结果的处理。优化
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (REQUEST_UPDATE_PERMISSION_CODE == requestCode) {
boolean haveInstallPermission = false;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if (mUpdate != null && haveInstallPermission) {
AppUpgradeMannager.getInstance(AboutUsBeaconActivity.this).startDown(mUpdate);
} else if (!haveInstallPermission) {
showToast("安装应用须要打开未知来源权限,请去设置中开启权限");
}
}
}
}
}
复制代码
好了,8.0的部分适配已经作好了,有了这份适配文档,不再担忧应用在8.0系统上安装不了哈哈哈😂ui