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

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 添加运行时权限

在一些场景下&#xff0c;需要给app 添加运行时权限&#xff0c;这样就不需要在使用的时候再去点击授权。 直接上代码&#xff1a; --- 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&#xff0c;顺便也带来了备受期待的 Win 11 2024 官方精简 LTSC&#xff08;老坛酸菜&#xff09;版。 Win 11 重磅更新发布&#xff0c;老坛酸菜版成了配角&#xff01; 简单来说&#xff0c;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三级试卷 &#xff08;满分&#xff1a;100 分 考试时间&#xff1a;90 分钟&#xff09; PDF试卷及答案回复:GESPC2023063 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 1 高级语言编写的程序需要经过以下&#xff08; &#xff09;操…...

Maven--简略

简介 Apache旗下的一款开源项目&#xff0c;用来进行项目构建&#xff0c;帮助开发者管理项目中的jar及jar包之间的依赖&#xff0c;还拥有项目编译、测试、打包的功能。 管理方式 统一建立一个jar仓库&#xff0c;把jar上传至统一的仓库&#xff0c;使用时&#xff0c;配置…...

leetcode 刷题day44动态规划Part13( 647. 回文子串、516.最长回文子序列)

647. 回文子串 动规五部曲&#xff1a; 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 按照之前做题的惯性&#xff0c;定义dp数组的时候很自然就会想题目求什么&#xff0c;就如何定义dp数组。但是对于本题来说&#xff0c;这样定义很难得到递推关系&#x…...

华为OD机试真题---关联子串

华为OD机试中的“关联子串”题目是一个考察字符串处理和算法理解的经典问题。以下是对该题目的详细解析&#xff1a; 一、题目描述 给定两个字符串str1 和 str2&#xff0c;如果字符串 str1 中的字符&#xff0c; 经过排列组合后的字符串中只要有一个是 str2 的子串&#xff…...

【OpenAI】第二节(Token)什么是Token?如何计算ChatGPT的Token?

深入解析&#xff1a;GPT如何计算Token数&#xff1f;让你轻松掌握自然语言处理的核心概念&#xff01;&#x1f680; 在当今的人工智能领域&#xff0c;GPT&#xff08;Generative Pre-trained Transformer&#xff09;无疑是最受关注的技术之一。无论是在文本生成、对话系统…...

GraphRAG + Ollama + Groq 构建知识库 续篇 利用neo4j显示知识库

GraphRAG Ollama Groq 构建知识库 在上一篇文章中&#xff0c;我们详细介绍了如何创建一个知识库。尽管知识库已经建立&#xff0c;但其内容的可视化展示尚未实现。我们无法直接看到知识库中的数据&#xff0c;也就无法判断这些数据是否符合我们的预期。为了解决这个问题&…...

工业以太网之战:EtherCAT是如何杀出重围的?

前言 EtherCAT 是一种开放的实时工业以太网协议&#xff0c;由德国倍福公司开发并在 2003 年 4 月的汉诺威工业博览会上首次亮相&#xff0c;目前由 EtherCAT 技术协会&#xff08;ETG&#xff09;进行维护和推广。经过 21 年的不断发展&#xff0c;EtherCAT 显示出极强的生命…...

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表&#xff1f; 可视化分组汇总表&#xff0c;是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度&#xff08;如时间、地区、产品类型等&#xff09;对数据进行分组&#xff0c;还能自动计算各组的统计指标&#xf…...

初始Python篇(4)—— 元组、字典

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 元组 相关概念 元组的创建与删除 元组的遍历 元组生成式 字典 相关概念 字典的创建与删除 字典的遍历与访问 字典…...

C#中正则表达式

在C#中&#xff0c;正则表达式由 System.Text.RegularExpressions 命名空间提供&#xff0c;可以使用 Regex 类来处理正则表达式。以下是一些常见的用法及示例。 C# 中使用正则表达式的步骤&#xff1a; 引入命名空间&#xff1a; using System.Text.RegularExpressions; 创…...

【python写一个带有界面的计算器】

python写一个带有界面的计算器 为了创建一个带有图形用户界面&#xff08;GUI&#xff09;的计算器&#xff0c;我们可以使用Python的tkinter库。tkinter是Python的标准GUI库&#xff0c;它允许我们创建窗口、按钮、文本框等GUI元素。 下面是一个简单的带有GUI的计算器示例&a…...

K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上

本示例打开摄像头&#xff0c;获取 3 个通道的图像并显示在 HDMI 显示器上。通道 0 采集 1080P 图像&#xff0c;通道 1 和通道 2 采集 VGA 分辨率的图像并叠加在通道 0 的图像上。 # Camera 示例 import time import os import sysfrom media.sensor import * from media.dis…...

nginx中的HTTP 负载均衡

HTTP 负载均衡&#xff1a;如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上&#xff0c;我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstr…...

package.json 里的 dependencies和devDependencies区别

dependencies&#xff08;依赖的意思&#xff09;&#xff1a; 通过 --save 安装&#xff0c;是需要发布到生产环境的。 比如项目中使用react&#xff0c;那么没有这个包的依赖就会报错&#xff0c;因此把依赖写入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 的步骤&#xff1a; 1. 更新包管理器&#xff1a; sudo apt update 2. 安装 Docker 的依赖包&#xff1a; sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release 3. 添加阿里云 Docker 镜像源 GP…...

得一微全资子公司硅格半导体携手广东工业大学,荣获省科学技术奖一等奖

10月17日&#xff0c;全省科技大会在广州召开&#xff0c;会上颁发了2023年度广东省科学技术奖。得一微电子旗下全资子公司深圳市硅格半导体有限公司&#xff08;以下简称“硅格半导体”&#xff09;与广东工业大学&#xff08;以下简称&#xff1a;广工大&#xff09;携手多家…...

CNAS实验室一份完整的质量手册需要包含哪些要素?一文教会质量手册编写

编写质量管理体系文件是CNAS实验室认证工作中非常重要的一个环节&#xff0c;实验室质量管理体系文件按照惯例&#xff0c;一般会分为四个层级&#xff0c;质量手册、程序文件、作业指导书和记录文件。实验室质量手册是实验室依据相关标准制定的纲领性文件&#xff0c;系统规定…...

C#从零开始学习笔记---第七天

不是同样的时间&#xff0c;不是同样的笔记&#xff0c;但是同样的作者。新的一天&#xff0c;欢迎收看我的学习笔记吼吼~我们昨天最后留了两道题&#xff0c;不知道大家做的怎么样&#xff0c;我现在来公布一下答案&#xff0c;但因为1000个人心里有1000个哈姆雷特&#xff0c…...

【网络安全】2026最新网安渗透测试标准及流程!新手小白零基础入门必看教程!

✅一、了解渗透测试 &#x1f534;什么是渗透测试&#xff1f; 渗透测试是一种安全性测试&#xff0c;通过发起模拟网络攻击的方式查找计算机系统中的漏洞。 渗透测试人员是拥有高超道德黑客技术的安全专业人员&#xff08;道德黑客是指运用黑客工具和黑客技术来修复安全薄弱环…...

压接 vs 焊接:高速连接器组装工艺的选型指南与实战对比

摘要/前言在通信设备、工业控制及数据中心硬件设计中&#xff0c;连接器的组装工艺选择直接影响产品的可靠性、可维护性与生产良率。压接&#xff08;Press-Fit&#xff09;与焊接&#xff08;Soldering&#xff09;是当前通孔连接器最主要的两种电气互连方式。压接依靠过盈配合…...

PyTorch模型从GPU‘搬家’到昇腾Ascend:除了装插件,这些性能调优和环境变量你设置对了吗?

PyTorch模型从GPU到昇腾Ascend的深度迁移指南&#xff1a;性能调优与实战陷阱解析 当我们将PyTorch模型从NVIDIA GPU迁移到华为昇腾Ascend平台时&#xff0c;简单的环境安装只是第一步。真正考验开发者功力的&#xff0c;是如何在异构计算架构间实现性能无损甚至提升的迁移。本…...

地平线旭日X3派边缘AI开发板深度体验:从开箱到模型部署实战

1. 项目概述&#xff1a;当“地平线”升起时&#xff0c;我们看到了什么&#xff1f;最近几年&#xff0c;如果你关注边缘计算、机器人或者智能驾驶&#xff0c;那么“地平线”这个名字你一定不陌生。它早已不是那个遥远的天际线&#xff0c;而是成为了国内AI芯片领域一个响当当…...

3步掌握SacreBLEU:让机器翻译评估变得简单可靠

3步掌握SacreBLEU&#xff1a;让机器翻译评估变得简单可靠 【免费下载链接】sacrebleu Reference BLEU implementation that auto-downloads test sets and reports a version string to facilitate cross-lab comparisons 项目地址: https://gitcode.com/gh_mirrors/sa/sacr…...

【JPCS出版、EI检索稳定】2026年航空航天工程与空天信息国际学术会议(ICAEAI 2026)

2026年航空航天工程与空天信息国际学术会议&#xff08;ICAEAI 2026&#xff09;将于2026年6月26-28日在哈尔滨召开。会议旨在为从事航空航天工程与空天信息领域研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;加强学术研究和探讨&…...

ABB机器人通过Socket实现ModbusTCP通信:Float浮点数解析与PLC数据交换实战

1. ABB机器人与PLC通信的基础原理 在工业自动化领域&#xff0c;设备间的数据交换是核心需求之一。ABB机器人作为客户端与PLC&#xff08;可编程逻辑控制器&#xff09;进行通信时&#xff0c;最常用的方式就是ModbusTCP协议。但这里有个关键点需要注意&#xff1a;ABB机器人的…...

从零到一:用Air724UG 4G模块和Python,手把手搭建一个物联网数据上报系统(含完整代码)

从零构建基于Air724UG的物联网数据中台&#xff1a;Python全栈开发实战 当你拿起一块Air724UG 4G模块时&#xff0c;握在手中的不仅是通讯硬件&#xff0c;更是连接物理世界与数字世界的桥梁。这个火柴盒大小的模块能够将田间地头的土壤数据、工厂车间的设备状态、城市角落的环…...