Android8.0未知来源应用安装权限

Android8.0未知来源应用安装权限

Android8.0的诸多新特性中有一个非常重要的特性:未知来源应用权限(危险权限)
android6.0到android8.0之前安装未知来源应用的时候一般会弹出一个弹窗让用户去设置允许还是拒绝,并且设置为允许之后,所有的未知来源的应用都可以被安装。

Android8.0的变化是,未知应用安装权限的开关被除掉,取而代之的是未知来源应用的管理列表,需要在里面打开每个应用的未知来源的安装权限。Google这么做是为了防止一开始正经的应用后来开始通过升级来做一些不合法的事情,侵犯用户权益。
当你的应用直接适配到Android8之后,内部启动应用安装是会被阻塞的,如果不处理好这个未知来源的权限,会导致应用根本无法更新,只能去应用市场重新下载
Activity类下getPackageManager().canRequestPackageInstalls();获取是否有未知来源应用安装权限
源码如下

AndroidManifest文件中配置
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
//权限检查
private void CheckUnknowInstallPermssion(){
    boolean haveInstallPermission;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
    {
        //获取是否有安装未知应用程序权限
        haveInstallPermission = getActivity().getPackageManager().canRequestPackageInstalls();
     if(!haveInstallPermission)
        {   //无权限,开启未知应用安装程序权限
            toInstallPermissionSettingIntent();
        };
        }
    }
}
 //开启安装未知来源权限
@RequiresApi(api = Build.VERSION_CODES.O)
private void toInstallPermissionSettingIntent() {
    Uri packageURI = Uri.parse("package:"+getActivity().getPackageName());
    Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
   //系统将打开是未知来源应用的管理列表,需要用户手动设置未知来源应用安装权限
    startActivityForResult(intent, 1);
}
//权限开启后的回调函数
  @Override
    public  void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == 1) {
          //权限开启成功,编写用户服务函数 
      // Toast.makeText(getActivity(),"ShadeScan安装权限已打开",Toast.LENGTH_SHORT).show();
        }
    }
    ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aly_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值