Android13 添加运行时权限
在一些场景下,需要给app 添加运行时权限,这样就不需要在使用的时候再去点击授权。
直接上代码:
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
@@ -925,6 +925,45 @@ final class DefaultPermissionGrantPolicy {String commonServiceAction = "android.adservices.AD_SERVICES_COMMON_SERVICE";grantPermissionsToSystemPackage(pm, getDefaultSystemHandlerServicePackage(pm,commonServiceAction, userId), userId, NOTIFICATION_PERMISSIONS);
+ // For custom pkg
+ grantPermissionsToCustomApp(pm, PCK_NAME_QMMI, userId);
+ grantPermissionsToCustomApp(pm, PCK_NAME_SNAPDRAGON_CAMERA, userId);
+ }
+
+ // custom app add default package
+ private static final String PCK_NAME_QMMI = "com.qualcomm.qti.qmmi";
+ //骁龙照相机(厂测应用会调用起骁龙相机进行拍照测试)
+ private static final String PCK_NAME_SNAPDRAGON_CAMERA = "org.codeaurora.snapcam";
+
+
+ /**
+ * 给定制的应用授予一些权限
+ */
+ private void grantPermissionsToCustomApp(PackageManagerWrapper pm , String packageName , int userId ){
+ Log.i("Custom", "Granting permissions to " + packageName + " for user " + userId );
+ try{
+ PackageInfo customPackage = pm.getPackageInfo(packageName);
+
+ if ((customPackage != null) && doesPackageSupportRuntimePermissions(customPackage)) {
+
+ Set<String> permissions = new ArraySet<>();
+ for (String permission : customPackage.requestedPermissions) {
+ final PermissionInfo perm = pm.getPermissionInfo(permission);
+ if (perm == null) {
+ continue;
+ }
+ if (perm.isRuntime()) {
+ Log.i("Custom", packageName + " need Runtime permission : " + permission );
+ permissions.add(permission);
+ }
+ }
+ if (!permissions.isEmpty()) {
+ grantRuntimePermissions(pm,customPackage, permissions, false, userId);
+ }
+ }
+ }catch(Exception e) {
+ e.printStackTrace();
+ }}
grantPermissionsToCustomApp 方法添加在grantDefaultSystemHandlerPermissions方法末尾就OK了
这个改动单编没生效,需整编验证。
相关文章:
Android13 添加运行时权限
在一些场景下,需要给app 添加运行时权限,这样就不需要在使用的时候再去点击授权。 直接上代码: --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.javab/services/core/java/com/android/server/pm…...
官方操刀占用仅6G,Win 11 LTSC详细安装、优化教程来了
前段时间微软发布 Win 11 年度重磅更新 24H2,顺便也带来了备受期待的 Win 11 2024 官方精简 LTSC(老坛酸菜)版。 Win 11 重磅更新发布,老坛酸菜版成了配角! 简单来说,Win 11 LTSC 是微软针对企业用户推出…...
【论文精读】RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning
RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning 前言AbstractMotivationSolutionRELIEFIncorporating Feature Prompts as MDPAction SpaceState TransitionReward Function Policy Network ArchitectureDiscrete ActorContinuous ActorCritic Overall…...
2023-06 GESP C++三级试卷
2023-06 GESP C三级试卷 (满分:100 分 考试时间:90 分钟) PDF试卷及答案回复:GESPC2023063 一、单选题(每题 2 分,共 30 分) 1 高级语言编写的程序需要经过以下( )操…...
Maven--简略
简介 Apache旗下的一款开源项目,用来进行项目构建,帮助开发者管理项目中的jar及jar包之间的依赖,还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库,把jar上传至统一的仓库,使用时,配置…...
leetcode 刷题day44动态规划Part13( 647. 回文子串、516.最长回文子序列)
647. 回文子串 动规五部曲: 1、确定dp数组(dp table)以及下标的含义 按照之前做题的惯性,定义dp数组的时候很自然就会想题目求什么,就如何定义dp数组。但是对于本题来说,这样定义很难得到递推关系&#x…...
华为OD机试真题---关联子串
华为OD机试中的“关联子串”题目是一个考察字符串处理和算法理解的经典问题。以下是对该题目的详细解析: 一、题目描述 给定两个字符串str1 和 str2,如果字符串 str1 中的字符, 经过排列组合后的字符串中只要有一个是 str2 的子串ÿ…...
【OpenAI】第二节(Token)什么是Token?如何计算ChatGPT的Token?
深入解析:GPT如何计算Token数?让你轻松掌握自然语言处理的核心概念!🚀 在当今的人工智能领域,GPT(Generative Pre-trained Transformer)无疑是最受关注的技术之一。无论是在文本生成、对话系统…...
GraphRAG + Ollama + Groq 构建知识库 续篇 利用neo4j显示知识库
GraphRAG Ollama Groq 构建知识库 在上一篇文章中,我们详细介绍了如何创建一个知识库。尽管知识库已经建立,但其内容的可视化展示尚未实现。我们无法直接看到知识库中的数据,也就无法判断这些数据是否符合我们的预期。为了解决这个问题&…...
工业以太网之战:EtherCAT是如何杀出重围的?
前言 EtherCAT 是一种开放的实时工业以太网协议,由德国倍福公司开发并在 2003 年 4 月的汉诺威工业博览会上首次亮相,目前由 EtherCAT 技术协会(ETG)进行维护和推广。经过 21 年的不断发展,EtherCAT 显示出极强的生命…...
轻量级可视化数据分析报表,分组汇总表!
什么是可视化分组汇总表? 可视化分组汇总表,是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度(如时间、地区、产品类型等)对数据进行分组,还能自动计算各组的统计指标…...
初始Python篇(4)—— 元组、字典
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 元组 相关概念 元组的创建与删除 元组的遍历 元组生成式 字典 相关概念 字典的创建与删除 字典的遍历与访问 字典…...
C#中正则表达式
在C#中,正则表达式由 System.Text.RegularExpressions 命名空间提供,可以使用 Regex 类来处理正则表达式。以下是一些常见的用法及示例。 C# 中使用正则表达式的步骤: 引入命名空间: using System.Text.RegularExpressions; 创…...
【python写一个带有界面的计算器】
python写一个带有界面的计算器 为了创建一个带有图形用户界面(GUI)的计算器,我们可以使用Python的tkinter库。tkinter是Python的标准GUI库,它允许我们创建窗口、按钮、文本框等GUI元素。 下面是一个简单的带有GUI的计算器示例&a…...
K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上
本示例打开摄像头,获取 3 个通道的图像并显示在 HDMI 显示器上。通道 0 采集 1080P 图像,通道 1 和通道 2 采集 VGA 分辨率的图像并叠加在通道 0 的图像上。 # Camera 示例 import time import os import sysfrom media.sensor import * from media.dis…...
nginx中的HTTP 负载均衡
HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…...
package.json 里的 dependencies和devDependencies区别
dependencies(依赖的意思): 通过 --save 安装,是需要发布到生产环境的。 比如项目中使用react,那么没有这个包的依赖就会报错,因此把依赖写入dependencies npm install <package-name>// 缩写 np…...
【功能安全】HARA分析中的SEC如何确认
目录 01 SEC介绍 02 SEC怎么定义 📖 推荐阅读 01 SEC介绍 SEC定义 S代表safety,E指的是Exposure,C指的是Controllability ASIL等级就是基于SEC三个参数确定下来的。 计算公式:10=D,9=C,8=B,7=A,<7=QM 举例:S3-C2-E4,即3+2+4=9,ASIL C 02 SEC怎么定义 Safe…...
阿里云Docker镜像源安装Docker的步骤
阿里云 Docker 镜像源安装 Docker 的步骤: 1. 更新包管理器: sudo apt update 2. 安装 Docker 的依赖包: sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release 3. 添加阿里云 Docker 镜像源 GP…...
得一微全资子公司硅格半导体携手广东工业大学,荣获省科学技术奖一等奖
10月17日,全省科技大会在广州召开,会上颁发了2023年度广东省科学技术奖。得一微电子旗下全资子公司深圳市硅格半导体有限公司(以下简称“硅格半导体”)与广东工业大学(以下简称:广工大)携手多家…...
国外版博睿康?国外初创公司成立对标博睿康
2026年4月2日,总部位于旧金山的脑机接口(BCI)初创公司Epia Neuro正式宣布成立,专注开发面向神经系统疾病的解决方案,旨在通过新型植入式神经接口平台,帮助中风幸存者和认知衰退患者恢复手部功能与独立生活能…...
如何用vJoy虚拟手柄驱动打造终极个性化游戏控制方案?免费开源教程指南
如何用vJoy虚拟手柄驱动打造终极个性化游戏控制方案?免费开源教程指南 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 在游戏世界中,你是否曾因物理手柄的局限性而感到困扰?键盘操作缺乏平…...
Nomacs图像查看器:从安装到高级使用的完整指南
Nomacs图像查看器:从安装到高级使用的完整指南 【免费下载链接】nomacs nomacs is a free image viewer for windows, linux, and mac systems. 项目地址: https://gitcode.com/gh_mirrors/no/nomacs Nomacs是一款免费开源的跨平台图像查看器,支持…...
星思半导体系统级通信测试实验室设备齐全,为卫星通信芯片验证提供坚实保障
随着政府工作报告首次为卫星互联网“定调”,资本市场的聚光灯迅速转向这条黄金赛道。业内观察指出,2026年的市场关注点更加务实,聚焦于真正具备核心技术、能参与国际竞争的上游“硬科技”企业。在政策与资本的同频共振下,以星思半…...
5分钟让老旧打印机变身AirPrint无线打印神器:cups-avahi-airprint完全指南
5分钟让老旧打印机变身AirPrint无线打印神器:cups-avahi-airprint完全指南 【免费下载链接】cups-avahi-airprint Docker image for CUPS intended as an AirPrint relay 项目地址: https://gitcode.com/gh_mirrors/cu/cups-avahi-airprint 在苹果生态日益普…...
联想拯救者Y7000系列BIOS隐藏功能一键解锁工具:3分钟开启高级设置,轻松安装黑苹果
联想拯救者Y7000系列BIOS隐藏功能一键解锁工具:3分钟开启高级设置,轻松安装黑苹果 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地…...
wxlivespy:微信视频号直播数据高效捕获与智能分析解决方案
wxlivespy:微信视频号直播数据高效捕获与智能分析解决方案 【免费下载链接】wxlivespy 微信视频号直播间弹幕信息抓取工具 项目地址: https://gitcode.com/gh_mirrors/wx/wxlivespy 在数字化直播浪潮中,实时数据已成为驱动运营决策的核心引擎。wx…...
终极Splide轮播组件路线图:从4.1.4到未来版本的升级指南与特性前瞻
终极Splide轮播组件路线图:从4.1.4到未来版本的升级指南与特性前瞻 【免费下载链接】splide Splide is a lightweight, flexible and accessible slider/carousel written in TypeScript. No dependencies, no Lighthouse errors. 项目地址: https://gitcode.com/…...
如何在电脑上玩手游?QtScrcpy虚拟按键终极指南
如何在电脑上玩手游?QtScrcpy虚拟按键终极指南 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 想在电脑上流畅玩手游?QtScrcpy的虚拟按键功能让这一切成为可…...
如何用OpenCore Legacy Patcher让老款Mac焕发新生:终极完整教程
如何用OpenCore Legacy Patcher让老款Mac焕发新生:终极完整教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款革…...
