am 92dfab8d: Merge "Clear granted permission when app is uninstalled by one of the multiple users" into mnc-dev
* commit '92dfab8d96dc854b8ccc48e1b2805069997879d5': Clear granted permission when app is uninstalled by one of the multiple users
This commit is contained in:
@@ -12500,6 +12500,8 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
if (clearPackagePreferredActivitiesLPw(packageName, removeUser)) {
|
||||
scheduleWritePackageRestrictionsLocked(removeUser);
|
||||
}
|
||||
revokeRuntimePermissionsAndClearAllFlagsLocked(ps.getPermissionsState(),
|
||||
removeUser);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -12706,13 +12708,37 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
| PackageManager.FLAG_PERMISSION_USER_FIXED
|
||||
| PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE;
|
||||
|
||||
revokeRuntimePermissionsAndClearFlagsLocked(permissionsState, userId, userSetFlags);
|
||||
}
|
||||
|
||||
/**
|
||||
* Revokes granted runtime permissions and clears all flags.
|
||||
*
|
||||
* @param permissionsState The permission state to reset.
|
||||
* @param userId The device user for which to do a reset.
|
||||
*/
|
||||
private void revokeRuntimePermissionsAndClearAllFlagsLocked(
|
||||
PermissionsState permissionsState, int userId) {
|
||||
revokeRuntimePermissionsAndClearFlagsLocked(permissionsState, userId,
|
||||
PackageManager.MASK_PERMISSION_FLAGS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Revokes granted runtime permissions and clears certain flags.
|
||||
*
|
||||
* @param permissionsState The permission state to reset.
|
||||
* @param userId The device user for which to do a reset.
|
||||
* @param flags The flags that is going to be reset.
|
||||
*/
|
||||
private void revokeRuntimePermissionsAndClearFlagsLocked(
|
||||
PermissionsState permissionsState, int userId, int flags) {
|
||||
boolean needsWrite = false;
|
||||
|
||||
for (PermissionState state : permissionsState.getRuntimePermissionStates(userId)) {
|
||||
BasePermission bp = mSettings.mPermissions.get(state.getName());
|
||||
if (bp != null) {
|
||||
permissionsState.revokeRuntimePermission(bp, userId);
|
||||
permissionsState.updatePermissionFlags(bp, userId, userSetFlags, 0);
|
||||
permissionsState.updatePermissionFlags(bp, userId, flags, 0);
|
||||
needsWrite = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user