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

Android T(13) The app is granted permissions by default

我的博客
对比Android11,frameworks\base\services\core\java\com\android\server\pm\permission文件夹下,多了个PermissionManagerServiceImpl.java.
有一部分关于权限的处理,移到了这个文件中.比如:restorePermissionState(…)

all app granted permissions by default
+++ b/frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java
@@ -206,12 +206,18 @@ public final class Permission {}public boolean isNormal() {
-        return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
-                == PermissionInfo.PROTECTION_NORMAL;
+        //add text
+        /*return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+                == PermissionInfo.PROTECTION_NORMAL;*/
+        return true;
+        //add text}public boolean isRuntime() {
-        return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
-                == PermissionInfo.PROTECTION_DANGEROUS;
+        //add text
+        /*return (mPermissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+                == PermissionInfo.PROTECTION_DANGEROUS;*/
+        return false;
+        //add text}
customer’s app granted permissions by default
 /*** Restore the permission state for a package.** <ul>*     <li>During boot the state gets restored from the disk</li>*     <li>During app update the state gets restored from the last version of the app</li>* </ul>** @param pkg the package the permissions belong to* @param replace if the package is getting replaced (this might change the requested*                permissions of this package)* @param packageOfInterest If this is the name of {@code pkg} add extra logging* @param callback Result call back* @param filterUserId If not {@link UserHandle.USER_ALL}, only restore the permission state for*                     this particular user*/private void restorePermissionState(@NonNull AndroidPackage pkg, boolean replace,@Nullable String packageOfInterest, @Nullable PermissionCallback callback,@UserIdInt int filterUserId) {...else if (bp.isRuntime()) {boolean hardRestricted = bp.isHardRestricted();boolean softRestricted = bp.isSoftRestricted();...if (wasChanged) {updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);}uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, flags);
+                        //add text
+                        String packageName_t = pkg.getPackageName();
+                        if(packageName_t.equals("android.xx.xxxxx")){
+                            uidState.revokePermission(bp);//先撤销
+                            uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, 0);//在更新
+                            updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
+                            if(uidState.grantPermission(bp)){
+                                changedInstallPermission = true;//让RunTime Permission 走 Install Permission 的路
+                            }
+                        }
+                        //add text} else {Slog.wtf(LOG_TAG, "Unknown permission protection " + bp.getProtection()+ " for permission " + bp.getName());...}    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 记录git push时的报错以及解决方案
  • spring中常用注解(一)
  • 成为Python砖家(1): 在本地查询Python HTML文档
  • 【前端】onclick使用HTML页面外的的JS函数时报错:onclick _function_ is not defined.
  • 【数据结构】PTA 求链表的倒数第m个元素 C语言
  • C++的拷贝构造,拷贝复制和析构
  • LLM应用实战: 产业治理多标签分类
  • C语言函数详解(上)【库函数】
  • 十要素超声波气象传感器
  • 「数组」希尔排序 / 区间增量优化(C++)
  • SpringBoot 整合 Excel 轻松实现数据自由导入导出
  • Browserless 网页抓取:Playwright 中的 NodeJS
  • 第2章 C语言基础知识
  • Windows C++控制台菜单库开发与源码展示
  • Java 调整字符串,验证码生成
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 4个实用的微服务测试策略
  • django开发-定时任务的使用
  • ES6 ...操作符
  • ES学习笔记(12)--Symbol
  • express如何解决request entity too large问题
  • Invalidate和postInvalidate的区别
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • nginx 负载服务器优化
  • spring boot下thymeleaf全局静态变量配置
  • vue-router 实现分析
  • windows下mongoDB的环境配置
  • 盘点那些不知名却常用的 Git 操作
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • linux 淘宝开源监控工具tsar
  • ​iOS实时查看App运行日志
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Java第九次作业--输入输出流和文件操作
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014# day.1 T2 联合权值
  • (+4)2.2UML建模图
  • (C#)一个最简单的链表类
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (简单) HDU 2612 Find a way,BFS。
  • (蓝桥杯每日一题)love
  • (离散数学)逻辑连接词
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (七)理解angular中的module和injector,即依赖注入
  • (算法)大数的进制转换
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)linux 命令大全
  • (自适应手机端)行业协会机构网站模板
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息