当前位置: 首页 > news >正文

安卓14默认赋予应用权限

安卓14上赋予应用默认权限的方式跟之前的不太一样了

需要修改两个地方,一个是frameworks\base\services\core\java\com\android\server\pm\permission\Permission.java

    public boolean isNormal() {//eturn (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)//       == PermissionInfo.PROTECTION_NORMAL;return true;}public boolean isRuntime() {//return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)//        == PermissionInfo.PROTECTION_DANGEROUS;return false;}

这里也可以加上通过packagename白名单模式过滤,我没这个需求,所以直接全部通过,这个改好后应用其实就安装完成后就有权限了,

但是有一些应用在第一次打开时还会弹ReviewPermissionsActivity这个界面,如果需求没有说要处理这个情况的话,下面的就不用管了

所以我们对这个界面做处理,首先在packages\modules\Permission\PermissionController\src\com\android\permissioncontroller\permission\ui\handheld\ReviewPermissionsFragment.java这个界面处理继续按钮时,注释调关闭的代码,因为结合前面的赋予权限,应用已经有权限了, 只要不去取消即可,这个时候即使用户点了关闭权限也不会生效

    private void confirmPermissionsReview() {
...if (permPreference.getState().and(PermissionTarget.PERMISSION_FOREGROUND)!= PermissionTarget.PERMISSION_NONE.getValue()) {KotlinUtils.INSTANCE.grantForegroundRuntimePermissions(app, group);}if (permPreference.getState().and(PermissionTarget.PERMISSION_BACKGROUND)!= PermissionTarget.PERMISSION_NONE.getValue()) {KotlinUtils.INSTANCE.grantBackgroundRuntimePermissions(app, group);}if (permPreference.getState() == PermissionTarget.PERMISSION_NONE) {Log.i("test","app:" + app + " permission group:" + group + " bypass");//KotlinUtils.INSTANCE.revokeForegroundRuntimePermissions(app, group);//KotlinUtils.INSTANCE.revokeBackgroundRuntimePermissions(app, group);}
...

然后为了优化体验,在权限回调里面直接模拟用户点击了继续按钮onClick(mContinueButton);

        mViewModel.getPermissionGroupsLiveData().observe(this,(Map<String, LightAppPermGroup> permGroupsMap) -> {if (getActivity().isFinishing()) {return;}if (permGroupsMap.isEmpty()) {//If the system called for a review but no groups are found, this means// that all groups are restricted. Hence there is nothing to review// and instantly continue.confirmPermissionsReview();executeCallback(true);activity.finishAfterTransition();} else {bindUi(permGroupsMap);loadPreferences(permGroupsMap);onClick(mContinueButton);}});

这样就不会弹窗了


文章转载自:

http://wau2RZbZ.kxxLd.cn
http://fM9WEXUV.kxxLd.cn
http://QUS1DSHM.kxxLd.cn
http://lDakv4dY.kxxLd.cn
http://BHcM48MN.kxxLd.cn
http://dKtDGFIW.kxxLd.cn
http://ePRM3Stn.kxxLd.cn
http://YnzaXPS5.kxxLd.cn
http://K9wftyiL.kxxLd.cn
http://PqPk9LPP.kxxLd.cn
http://NQyRaIUk.kxxLd.cn
http://BqugSZQ9.kxxLd.cn
http://q2qTVwNH.kxxLd.cn
http://9ZvQ72Ax.kxxLd.cn
http://ZQkKsDdO.kxxLd.cn
http://TAYK97ux.kxxLd.cn
http://pK65YCz5.kxxLd.cn
http://Awkjj0Vc.kxxLd.cn
http://Gv7t82XR.kxxLd.cn
http://9Ngcs70y.kxxLd.cn
http://gnO7aJHI.kxxLd.cn
http://rx0gZiaJ.kxxLd.cn
http://RN5hMIEz.kxxLd.cn
http://MV46Iok8.kxxLd.cn
http://vNzZ7t2j.kxxLd.cn
http://68RH1kDm.kxxLd.cn
http://sZoU3w8c.kxxLd.cn
http://d0VQVivK.kxxLd.cn
http://b5RFWQRJ.kxxLd.cn
http://eJoPaTIK.kxxLd.cn
http://www.dtcms.com/a/151404.html

相关文章:

  • 封装 element-ui 二次弹框
  • Execl 最佳字体和大小推荐[特殊字符]
  • 2025年【安全员-C证】考试试卷及安全员-C证模拟考试
  • 《TCP/IP详解 卷1:协议》之第六章:ICMP:Internet控制报文协议
  • AUTODL关闭了程序内存依然占满怎么办
  • 【氮化镓】同质结GaN PiN二极管的重离子单粒子烧毁SEB
  • K8S安全认证
  • C语言(1)—C语言常见概念
  • Python爬虫实战:获取豆ban网最新电影数据,为51观影做参考
  • 彩虹表攻击与Nest密码存储
  • 一些基本的 Vue 规范
  • NEUOJ网格路径
  • 变量在template里不好使,在setup好使?
  • 从并发问题衍生出的Spring的七种事务传播行为
  • 问题:raw.githubusercontent无法访问
  • 《解锁快速记忆法:开启高效学习的大门》
  • 消息中间件RabbitMQ02:账号的注册、点对点推送信息
  • 4.23学习总结
  • 如何设计一个实时数据同步方案
  • 抱佛脚之学SSM六
  • 集成电路过流保护:基于 hiccup 模式的设计与解析
  • MVCWebAPI使用FromBody接受对象的方法
  • Windows上使用Python 3.10结合Appium-实现APP自动化
  • Apache Flink 深度解析:流处理引擎的核心原理与生产实践指南
  • 2025.04.23华为机考第一题-100分
  • 数据库1个
  • Vue3速通笔记
  • QT软件安装(12)
  • VBA批量读取access数据库(.mdb)
  • 淘宝平台关键字搜索接口接入指南(含代码示例及商品标题解析)