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

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/
http://www.xdnf.cn/news/16819.html

相关文章:

  • 《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》
  • 开疆智能Profinet转Modbus网关连接信捷PLC从站配置案例
  • WPFC#超市管理系统(4)入库管理
  • oect刷入arm系统安装docker
  • 【Redis数据结构详解】特点、用途与实际应用
  • CCF IVC 2025“汽车安全攻防赛” -- Crypto -- WriteUp
  • VAST视频广告技术实现:从零开始搭建视频广告投放系统
  • 文件同步神器-rsync命令讲解
  • linux编译基础知识-库文件标准路径
  • Oracle 11g RAC集群部署手册(一)
  • imx6ull-驱动开发篇6——Linux 设备树语法
  • K8S部署ELK(二):部署Kafka消息队列
  • NVIDIA GPU架构
  • 四、Portainer图形化管理实战与Docker镜像原理
  • express-jwt报错:Error: algorithms should be set
  • Ubuntu系统VScode实现opencv(c++)视频及摄像头使用
  • [硬件电路-112]:模拟电路 - 信号处理电路 - 二极管的应用 - 峰值检测电路与波形展示
  • 【网络与爬虫 37】ScrapeFly深度解析:云端爬虫革命,告别复杂部署拥抱一键API
  • C++入门自学Day5-- c++类与对象(面试题)
  • 苹果MAC 安卓模拟器
  • HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践
  • CS课程项目设计7:基于Canvas交互友好的五子棋游戏
  • Pyspark的register方法自定义udf函数
  • Mysql在页内是怎么查找数据的?
  • Web 开发 10
  • Redis 核心概念、命令详解与应用实践:从基础到分布式集成
  • pyqt5显示任务栏菜单并隐藏主窗口,环境pyqt5+vscode
  • JVM 03 类加载机制
  • Python打卡Day30 模块和库的导入
  • LeetCode 刷题【26. 删除有序数组中的重复项、27. 移除元素、28. 找出字符串中第一个匹配项的下标】