关于Android 8.0适配应用内部升级适配

关于Android 8.0适配应用内部升级适配

最近对应用作了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

相关文章
相关标签/搜索