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,27 +194,38 @@ 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)
if (isStarted(userId)) { .getUserIds();
synchronizePackagePermissionsAndAppOpsForUser(packageName, userId); for (final int userId : userIds) {
if (isStarted(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)
if (isStarted(userId)) { .getUserIds();
synchronizePackagePermissionsAndAppOpsForUser(packageName, userId); for (final int userId : userIds) {
resetAppOpPermissionsIfNotRequestedForUid(uid); if (isStarted(userId)) {
synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
final int uid = UserHandle.getUid(userId, appId);
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)
if (isStarted(userId)) { .getUserIds();
resetAppOpPermissionsIfNotRequestedForUid(uid); for (final int userId : userIds) {
if (isStarted(userId)) {
final int uid = UserHandle.getUid(userId, appId);
resetAppOpPermissionsIfNotRequestedForUid(uid);
}
} }
} }
}); });