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

本文详细介绍了如何在Android 8.0系统中适配应用内升级,重点讲解了如何处理未知来源应用安装权限的申请流程。在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值