Merge "Update the BroadcastQueue logic for runtime permissions" am: 1465700c00

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

Change-Id: I392126446bcc62a8f5d05d54cd1ed94c708ad2f7
This commit is contained in:
Hui Wang
2021-10-15 17:07:37 +00:00
committed by Automerger Merge Worker

View File

@@ -1568,17 +1568,23 @@ public final class BroadcastQueue {
perm = PackageManager.PERMISSION_DENIED;
}
if (perm == PackageManager.PERMISSION_GRANTED) {
skip = true;
break;
}
int appOp = AppOpsManager.permissionToOpCode(excludedPermission);
if (appOp != AppOpsManager.OP_NONE) {
if (mService.getAppOpsManager().checkOpNoThrow(appOp,
// When there is an app op associated with the permission,
// skip when both the permission and the app op are
// granted.
if ((perm == PackageManager.PERMISSION_GRANTED) && (
mService.getAppOpsManager().checkOpNoThrow(appOp,
info.activityInfo.applicationInfo.uid,
info.activityInfo.packageName)
== AppOpsManager.MODE_ALLOWED) {
== AppOpsManager.MODE_ALLOWED)) {
skip = true;
break;
}
} else {
// When there is no app op associated with the permission,
// skip when permission is granted.
if (perm == PackageManager.PERMISSION_GRANTED) {
skip = true;
break;
}