Merge "Fix multi-user handling in PermissionPolicyService." into udc-dev

This commit is contained in:
Hai Zhang
2023-02-23 19:43:21 +00:00
committed by Android (Google) Code Review

View File

@@ -194,29 +194,40 @@ public final class PermissionPolicyService extends SystemService {
mPackageManagerInternal.getPackageList(new PackageListObserver() { mPackageManagerInternal.getPackageList(new PackageListObserver() {
@Override @Override
public void onPackageAdded(String packageName, int uid) { public void onPackageAdded(String packageName, int appId) {
final int userId = UserHandle.getUserId(uid); final int[] userIds = LocalServices.getService(UserManagerInternal.class)
.getUserIds();
for (final int userId : userIds) {
if (isStarted(userId)) { if (isStarted(userId)) {
synchronizePackagePermissionsAndAppOpsForUser(packageName, userId); synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
} }
} }
}
@Override @Override
public void onPackageChanged(String packageName, int uid) { public void onPackageChanged(String packageName, int appId) {
final int userId = UserHandle.getUserId(uid); final int[] userIds = LocalServices.getService(UserManagerInternal.class)
.getUserIds();
for (final int userId : userIds) {
if (isStarted(userId)) { if (isStarted(userId)) {
synchronizePackagePermissionsAndAppOpsForUser(packageName, userId); synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
final int uid = UserHandle.getUid(userId, appId);
resetAppOpPermissionsIfNotRequestedForUid(uid); resetAppOpPermissionsIfNotRequestedForUid(uid);
} }
} }
}
@Override @Override
public void onPackageRemoved(String packageName, int uid) { public void onPackageRemoved(String packageName, int appId) {
final int userId = UserHandle.getUserId(uid); final int[] userIds = LocalServices.getService(UserManagerInternal.class)
.getUserIds();
for (final int userId : userIds) {
if (isStarted(userId)) { if (isStarted(userId)) {
final int uid = UserHandle.getUid(userId, appId);
resetAppOpPermissionsIfNotRequestedForUid(uid); resetAppOpPermissionsIfNotRequestedForUid(uid);
} }
} }
}
}); });
mPermissionManagerInternal.addOnRuntimePermissionStateChangedListener( mPermissionManagerInternal.addOnRuntimePermissionStateChangedListener(