【定制Android系统】Android O 默认允许应用弹窗申请权限

需求:Android 应用在 6.0 以后?就需要动态申请权限了,那些写在 AndroidManifest.xml 中的权限在应用运行时会弹窗申请。如果应用跑在不方便与最终用户做交互的场景,例如摄像头等,或者单纯地不希望应用再弹窗申请权限,而是默认授予应用全部的权限。

https://blog.csdn.net/frakie_kwok/article/details/78531500 这篇文章提到了一种在 pm/DefaultPermissionGrantPolicy.java 中,通过对包名的判断进行预授权的方法。

而当应用申请的权限在不断变化时,时而新增权限时,或者不知道应用想申请什么权限时,在上述位置把全部的权限预先授予应用,可能也是一种方法。但是目前我尚不清楚,上述对应用进行预授权的方法,是不是只在第一次开机时(或者恢复出厂设置后第一次开机时)、或者只在开机时会被调用,不知道在 PACKAGE_REPLACED、PACKAGE_ADDED 的时候,会不会被调用,也很难做到对一个包名改变了的应用进行预授权。

那么,下面将要说到的这种方法,就会比较健壮地对应用申请的权限提供授权操作。因为,它是在应用打开、发现权限尚未被授予、弹窗申请权限时,直接给与了确认操作。所以,这种方案会更普适一些,当然,也可以在该位置对包名加以分析,然后再决定是否对应用默认允许他们的权限;或者,可以对系统版本等信息进行判断,然后决定是否默认允许。

方案如下:
在 ap/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java 中;
在 onCreate 中,源码为

        DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
        final int permissionPolicy = devicePolicyManager.getPermissionPolicy(null);

改为:

        DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
        // modify by Enoch : auto grant app permission 
        final int permissionPolicy = DevicePolicyManager.PERMISSION_POLICY_AUTO_GRANT;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深海Enoch

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

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

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

打赏作者

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

抵扣说明:

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

余额充值