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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21555343

Change-Id: I7b0cd2391ac62968bef0bc0126f6333acc15c96e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Hai Zhang
2023-02-24 00:46:14 +00:00
committed by Automerger Merge Worker

View File

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