Android 三大权限介绍-Android第一次开机App授权弹框-默认授权

提示:Android第一次开机App授权问题


前言

MTK平台,刷完固件第一次开机会有App请求授权问题,如何规避授权、默认授权。
最终目的:

  • 默认授权,不让弹框提醒授权
  • 增加、提升体验

一、 需求-屏蔽授权弹框-默认授权

实际问题如下,第一次刷完机、或者恢复出厂设置后,开机会弹出这样的授权弹框
在这里插入图片描述

那么第一次开机有很多流程的,不允许弹框让客户去点击的,要做的就是默认授权、去掉弹框提醒。

二、参考资料

Rk-内置应用作为系统Launcher-内置APK-拷贝文件-替换开机动画 内容里面有默认给内置应用授权
Android系统默认输入法-搜狗输入法或者谷歌拼音输入法-运行时授权

MTK平台-去除第一次开机-默认权限提示框

直接来说就是为了解决开机默认这个弹框:
在这里插入图片描述

在这里插入图片描述

有人会问,这三个弹框和需求弹框不一样呀? 后面给出说明,这里暂不讨论。

三、修改文件

frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java

四、实现方案

默认授权运行时权限

路径
frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
如参考资料中给出的之前解决方案,在 grantDefaultPermissions 方法中添加包名即可。
在这里插入图片描述

禁止权限预览

路径:frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
在方法 isPermissionsReviewRequiredInternal 是否预览中直接返回false,不让预览权限。

此权限弹框界面-到底是什么

首先 dumpsys 一下当前ACTIVITY是啥子

  ACTIVITY com.komect.ajlauncher/com.komect.bussness.guide.GuideActivity a534b13 pid=3586
  ACTIVITY com.android.permissioncontroller/.permission.ui.ReviewPermissionsActivity 92b893 pid=3173
  ACTIVITY com.android.permissioncontroller/.permission.ui.ReviewPermissionsActivity ac6cfe5 pid=3173
  ACTIVITY com.android.permissioncontroller/.permission.ui.ReviewPermissionsActivity 75a8123 pid=3173
  ACTIVITY com.android.permissioncontroller/.permission.ui.ReviewPermissionsActivity f097229 pid=3173
  ACTIVITY com.android.permissioncontroller/.permission.ui.ReviewPermissionsActivity a0c4e6b pid=3173
 
 

查阅资料,简要说明如下:

  • ReviewPermissionsActivity:批量授权确认页(Android12 新 UI),App 首次启动时一次性让用户审阅并授予所有危险权限。

五、Android体系三大权限

MTK Android12 三大权限 Activity 完整对比表说明

我这里整理一张表,分别对应如上界面,这里先整体理解三大权限弹框:
通过整理先搞清楚不同弹框的实际、意义、为什么弹框,然后在针对性的解决各种弹框问题、默认授权等。

对比项ReviewPermissionsActivityPermissionsAnnouncementActivityGrantPermissionsActivity
核心目的App 首次启动批量审阅所有危险权限、统一授权系统开机 / 升级隐私权限政策公告告知App 运行时单个 / 逐个动态申请权限
是否实际授权✅ 是,操作后直接写入权限授予状态❌ 否,仅弹窗告知,不修改任何权限✅ 是,逐个授予 / 拒绝单项权限
触发主体系统 AMS/PMS 主动拦截 App 启动触发系统开机向导 / 系统升级流程主动触发应用主动调用 requestPermissions() 触发
触发时机新安装 App 首次启动、清数据后首次启动、系统升级后 App 首启新机恢复出厂首次开机、系统大版本 OTA 升级后首次进桌面 App 运行中用到相机 / 定位 / 麦克风等时随时触发
作用范围单个应用所有危险权限组整机系统全局,对所有 App 生效单个应用单个权限组
界面按钮允许全部 / 拒绝全部知道了 / 同意确认允许 / 仅使用期间允许 / 拒绝 / 拒绝不再询问
弹窗频次每个 App终身只弹 1 次(已审阅不再弹)整机终身只弹 1 次(开机 / 升级仅一次)可多次弹窗,每次缺权限就弹
是否拦截流程强拦截,不操作无法进入 App 主页强拦截,不确认无法进入系统桌面不拦截 App 主流程,悬浮弹窗询问
Android12 角色Android12 新增批量权限审阅 UI原生遗留 + 12 强化的隐私合规公告页传统经典运行时权限申请 UI
MTK 常用定制点关闭弹窗、默认全授权、豁免系统 App 不弹窗直接屏蔽弹窗、修改公告文案、跳过强制确认默认允许所有单项权限、屏蔽弹窗、静默授权
归属场景预装 / 第三方 App 首启权限批量管控系统合规、隐私政策合规弹窗应用日常动态权限申请

三者底层联系(MTK Android12 统一架构)

  • 三者都隶属于 PermissionController 系统 priv-app,同属于系统权限管理 UI 层;
  • 底层都依赖 PMS / PermissionManagerService 权限管理服务;
  • 流程优先级:PermissionsAnnouncementActivity(开机最先弹)
→ 进入桌面
→ 打开新 App 触发 ReviewPermissionsActivity(批量授权)
→ App 运行缺权限触发 GrantPermissionsActivity(单项授权)

各自独立作用小结

1. PermissionsAnnouncementActivity

系统全局隐私公告页,纯合规告知,不授权、不干预 App 权限,只做开机首次政策确认,是安卓隐私合规强制页面。

2. ReviewPermissionsActivity

Android12 专属App 批量权限审阅页,系统主动拦截 App 启动,一次性展示该 App 所有高危权限,用户批量同意 / 拒绝,替代旧版逐个弹的模式。

3. GrantPermissionsActivity

传统单项运行时权限弹窗,App 代码主动申请哪个权限,就弹哪个权限的确认框,是日常开发最常见的权限弹窗。

六、思考

如何解决ReviewPermissionsActivity 批量授权弹框

分了两步骤:

  • 默认授权 :frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
    如参考资料中给出的之前解决方案,在 grantDefaultPermissions 方法中添加包名

  • 不让批量授权弹框显示:禁止权限批量授权预览,frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
    在方法 isPermissionsReviewRequiredInternal 是否预览中直接返回false,不让预览权限

    禁止批量授权会不会影响授权?

    其实是不会的,本身就有运行时权限动态授权 机制的。 比如新按照的第三方应用或者内置应用,你屏蔽了批量授权也会有动态申请权限的,比如:
    在这里插入图片描述

针对源码这里暂不分析了,已经知道了弹框的ACTIVITY,源码自行查看研究下。


总结

  • 搞清楚权限弹框是什么:批量授权
  • MTK Android12 以后的一个机制
  • 以前很少遇到,突然遇到了在这里就针对性整理一下,恰好三大弹框-权限相关的知识点联系起来了,意义很大。
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据和技术支持。; 适合人群:具备一定自动控制理论基础和Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

野火少年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值