Android 13/14/15 默认授权应用权限的实现方法
在Android系统定制开发中,有时需要为应用自动授予运行时权限,避免用户手动授权的繁琐过程。本文将介绍在Android 13、14、15版本中实现默认权限授权的不同方法。
Android 13/14 权限授权方案
对于Android 13和14版本,可以通过修改Permission.java
文件来实现权限的默认授权。
修改方案
修改文件:frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java
--- a/frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java
+++ b/frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java
@@ -206,12 +206,14 @@ public final class Permission {}public boolean isNormal() {
- return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
- == PermissionInfo.PROTECTION_NORMAL;
+ // return (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 (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+ // == PermissionInfo.PROTECTION_DANGEROUS;
+ return false;}
实现原理
这种修改方式的核心思路是:
- 将所有权限都标记为
Normal
权限(返回true) - 将所有权限都不标记为
Runtime
权限(返回false) - 这样系统会将所有权限当作普通权限处理,在安装时自动授予
Android 15 权限授权方案
重要提醒:Android 15版本中,上述修改Permission.java
的方式已经无效,需要采用新的实现方案。
修改方案
Android 15需要修改两个文件来实现权限的自动授权:
1. 修改DeviceIdleController.java
修改文件:frameworks/base/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java
--- a/frameworks/base/apex/