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

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.dtcms.com/a/311638.html

相关文章:

  • 广告牌+序列帧的Shader效果
  • rocky\centos安装docker镜像的命令
  • 深入理解C++中的list容器:介绍、使用与实现
  • Flutter dart运算符
  • mini-swe-agent源码解读(进行中)
  • Redis 7 哈希(Hash)使用指南
  • 细分推广场景,让推客推广更贴合用户当下需求
  • 存储过程的介绍、基本语法、delimiter的使用
  • 未来交通:元宇宙技术重塑出行体验
  • 用Unity结合VCC更改人物模型出现的BUG
  • WebSocket断线重连机制:保障实时通信的高可用性
  • 疯狂星期四文案网第27天运营日记
  • 井云科技2D交互数字人:让智能服务触手可及的实用方案
  • KSP与ASM深度对比:原理、性能与使用场景
  • SpringBoot怎么查看服务端的日志
  • sqli-labs通关笔记-第28a关GET字符注入(关键字过滤绕过 手注法)
  • USB Device(VID_1f3a_PID_efe8) 驱动叹号
  • ART数据库索引结构--ART,The adaptive radix tree论文细读
  • 基于落霞归雁思维框架的软件需求管理实践指南
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • 【C++/STL】vector的OJ,深度剖析和模拟实现
  • Java多线程入门-基础概念与线程操作
  • JVM 01 运行区域
  • 动态规划经典模型:双数组问题的通用解决框架与实战
  • C++ STL 组件及其关系:从模块化设计到图形化展示
  • SpringBoot AOP
  • CYUSB3014-BZXC-USB3.0接口芯片-富利威
  • python---literal_eval函数
  • Python管道编程解析:构建高效数据流处理框架
  • Redis从入门到实战