1. Environment
Qualcomm 865 Android 10
2. Specific details
Phenomenon: Permissions are granted to third-party applications by default. When clearing user data in application information, the permissions will also be cleared;
Hope: Only clean data, retain permissions
The relevant source code modifications are as follows:
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4064,6 +4064,8 @@ public class ActivityManagerService extends IActivityManager.Stub
@Override
public 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,
When installing an application, permissions are given by default. Please refer to another blog:
Android-Framework grants permissions to installed applications by default - CSDN Blog