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

Android-Framework 清除应用用户数据,不清除权限

一、环境

高通865 Android 10

二、具体详情

现象:默认赋予第三方应用的权限,在应用信息中清理用户数据的时候,权限也会被清理掉;

希望:只清理数据,保留权限

相关源码修改如下:

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4064,6 +4064,8 @@ public class ActivityManagerService extends IActivityManager.Stub@Overridepublic boolean clearApplicationUserData(final String packageName, boolean keepState,final IPackageDataObserver observer, int userId) {
+        //not remove Permission        
+        keepState=true;enforceNotIsolatedCaller("clearApplicationUserData");int uid = Binder.getCallingUid();int pid = Binder.getCallingPid();
@@ -4748,7 +4750,7 @@ public class ActivityManagerService extends IActivityManager.Stub}// Remove transient permissions granted from/to this package/user
-        mUgmInternal.removeUriPermissionsForPackage(packageName, userId, false, false);
+       // mUgmInternal.removeUriPermissionsForPackage(packageName, userId, false, false);if (doit) {for (i = mBroadcastQueues.length - 1; i >= 0; i--) {

 frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

                         InstallArgs args = data.args;PackageInstalledInfo parentRes = data.res;-                        final boolean grantPermissions = (args.installFlags
-                                & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
+                        // final boolean grantPermissions = (args.installFlags
+                        //         & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;
+                        final boolean grantPermissions = true;final boolean killApp = (args.installFlags& PackageManager.INSTALL_DONT_KILL_APP) == 0;final boolean virtualPreload = ((args.installFlags
@@ -19953,7 +19954,7 @@ public class PackageManagerService extends IPackageManager.Stub}PackageSetting ps = (PackageSetting) pkg.mExtras;
-            resetUserChangesToRuntimePermissionsAndFlagsLPw(ps, userId);
+            //resetUserChangesToRuntimePermissionsAndFlagsLPw(ps, userId);}clearAppDataLIF(pkg, userId,

安装应用时,默认给权限,请查阅另外一篇博客:

Android-Framework 默认给安装的应用赋权限-CSDN博客

http://www.lryc.cn/news/216987.html

相关文章:

  • CS认证办理流程,CS认证好处
  • macOS 安装brew
  • H5: 使用Web Audio API播放音乐
  • Parasoft C/C++test:汽车网络安全ISO 21434最佳实践
  • 如何卸载干净 IDEA(图文讲解)windows和Mac教程
  • Docker搭建Gitlab
  • STM32F4X SDIO(四) SDIO控制器
  • 【flink】Task 故障恢复详解以及各重启策略适用场景说明
  • 一个计算机高手的成长3
  • 2023应届生能力考试含解析(Java后端开发)——(1)
  • Ansible中的任务执行控制
  • 利用maven的dependency插件分析工程的依赖
  • 【广州华锐互动】VR野外求生技能学习,让你感受真实的冒险之旅!
  • k8s、调度约束
  • Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍
  • 电子器件 MOS管的参数、选型与使用技巧
  • EtherCAT主站SOEM -- 2 -- SOEM之ethercatbase.h/c文件解析
  • Spring集成高性能队列Disruptor
  • C++——类和对象(中)完结
  • Sqoop的安装和使用
  • java毕业设计基于springboot+vue的村委会管理系统
  • 【C++】多态 ⑪ ( 纯虚函数和抽象类 | 纯虚函数语法 | 抽象类和实现 | 代码示例 )
  • node 第十四天 基于express的第三方中间件multer node后端处理用户上传文件
  • KnowledgeGPT:利用检索和存储访问知识库上增强大型语言模型10.30
  • Angular material Chips Autocomplete
  • 『亚马逊云科技产品测评』活动征文|搭建基础运维环境
  • 双指针扫描
  • uniapp小程序九宫格抽奖
  • mysql树状结构查询及注意事项
  • TimeGPT-1——第一个时间序列数据领域的大模型他来了