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

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

最近对应用做了8.0适配,主要是对允许未知来源应用的安装做了适配。到目前为止8.0系统以后,设置里面再也找不到了允许未知来源安装的开关,因为goole不希望一次授权终身使用,这对一些恶意软件可以让用户知情,在安全上做了优化。那我们看看现在8.0是怎么做的操作,8.0以后,应用内升级安装应用,都必须去允许未知来源应用安装打开开关,然后才能进行安装。

获取到本应用是否允许未知来源安装

true 可以进行安装,false 需要进行申请权限,申请允许未知来源应用安装和我们往常申请特殊权限不一样,申请这个权限需要跳转到相应的权限允许页面进行申请,否则无法安装应用,得到官方应用商店才能对应用进行升级。

haveInstallPermission = getPackageManager().canRequestPackageInstalls();
复制代码

申请允许未知来源应用安装

 @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,不然只能跳转到权限管理列表,那样对回调无法处理。

最后我们要在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系统上安装不了哈哈哈?

转载于:https://juejin.im/post/5cb5973f51882532be1bee60

你可能感兴趣的:(关于Android 8.0适配应用内部升级适配)