Support revoke-when-requested with pre-M apps
In this case the permission should not be revoked, but the app-op should be. Fixes: 124609307 Test: atest SplitPermissionTests Change-Id: I4e70b8f9ef1e01320adb55096437e82a058883db
This commit is contained in:
@@ -1181,11 +1181,9 @@ public class PermissionManagerService {
|
||||
@NonNull int[] updatedUserIds) {
|
||||
AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
|
||||
|
||||
if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
|
||||
return updatedUserIds;
|
||||
}
|
||||
|
||||
String pkgName = pkg.packageName;
|
||||
boolean supportsRuntimePermissions = pkg.applicationInfo.targetSdkVersion
|
||||
>= Build.VERSION_CODES.M;
|
||||
|
||||
int[] users = UserManagerService.getInstance().getUserIds();
|
||||
int numUsers = users.length;
|
||||
@@ -1210,15 +1208,17 @@ public class PermissionManagerService {
|
||||
if ((flags & (FLAG_PERMISSION_GRANTED_BY_DEFAULT
|
||||
| FLAG_PERMISSION_POLICY_FIXED | FLAG_PERMISSION_SYSTEM_FIXED))
|
||||
== 0) {
|
||||
int revokeResult = ps.revokeRuntimePermission(bp, userId);
|
||||
if (revokeResult
|
||||
!= PERMISSION_OPERATION_FAILURE) {
|
||||
|
||||
if (DEBUG_PERMISSIONS) {
|
||||
Slog.i(TAG, "Revoking runtime permission " + permission
|
||||
+ " for " + pkgName
|
||||
+ " as it is now requested");
|
||||
if (supportsRuntimePermissions) {
|
||||
int revokeResult = ps.revokeRuntimePermission(bp, userId);
|
||||
if (revokeResult != PERMISSION_OPERATION_FAILURE) {
|
||||
if (DEBUG_PERMISSIONS) {
|
||||
Slog.i(TAG, "Revoking runtime permission "
|
||||
+ permission + " for " + pkgName
|
||||
+ " as it is now requested");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
setAppOpMode(permission, pkg, userId, MODE_IGNORED);
|
||||
}
|
||||
|
||||
List<String> fgPerms = mBackgroundPermissions.get(permission);
|
||||
|
||||
Reference in New Issue
Block a user