Merge "Don't re-prompt for VISUAL/AURAL after app upgrade" into tm-dev

This commit is contained in:
Jay Sullivan
2022-04-21 17:03:23 +00:00
committed by Android (Google) Code Review

View File

@@ -195,6 +195,11 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
/** All storage permissions */ /** All storage permissions */
private static final List<String> STORAGE_PERMISSIONS = new ArrayList<>(); private static final List<String> STORAGE_PERMISSIONS = new ArrayList<>();
private static final Set<String> READ_MEDIA_AURAL_PERMISSIONS = new ArraySet<>();
private static final Set<String> READ_MEDIA_VISUAL_PERMISSIONS = new ArraySet<>();
/** All nearby devices permissions */ /** All nearby devices permissions */
private static final List<String> NEARBY_DEVICES_PERMISSIONS = new ArrayList<>(); private static final List<String> NEARBY_DEVICES_PERMISSIONS = new ArrayList<>();
@@ -222,10 +227,10 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
Manifest.permission.INTERACT_ACROSS_USERS_FULL); Manifest.permission.INTERACT_ACROSS_USERS_FULL);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_EXTERNAL_STORAGE); STORAGE_PERMISSIONS.add(Manifest.permission.READ_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); STORAGE_PERMISSIONS.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.ACCESS_MEDIA_LOCATION); READ_MEDIA_AURAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_AUDIO);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_AUDIO); READ_MEDIA_VISUAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_VIDEO);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_IMAGES); READ_MEDIA_VISUAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_IMAGES);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_VIDEO); READ_MEDIA_VISUAL_PERMISSIONS.add(Manifest.permission.ACCESS_MEDIA_LOCATION);
NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_ADVERTISE); NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_ADVERTISE);
NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_CONNECT); NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_CONNECT);
NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_SCAN); NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_SCAN);
@@ -2070,7 +2075,10 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
PermissionInfo permInfo = getPermissionInfo( PermissionInfo permInfo = getPermissionInfo(
newPackage.getRequestedPermissions().get(i), newPackage.getRequestedPermissions().get(i),
newPackage.getPackageName(), 0); newPackage.getPackageName(), 0);
if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) { boolean isStorageOrMedia = STORAGE_PERMISSIONS.contains(permInfo.name)
|| READ_MEDIA_AURAL_PERMISSIONS.contains(permInfo.name)
|| READ_MEDIA_VISUAL_PERMISSIONS.contains(permInfo.name);
if (permInfo == null || !isStorageOrMedia) {
continue; continue;
} }
@@ -3144,7 +3152,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
} }
if (bp.isRuntime()) { if (bp.isRuntime()) {
if (!newPerm.equals(Manifest.permission.ACTIVITY_RECOGNITION)) { if (!(newPerm.equals(Manifest.permission.ACTIVITY_RECOGNITION)
|| READ_MEDIA_AURAL_PERMISSIONS.contains(newPerm)
|| READ_MEDIA_VISUAL_PERMISSIONS.contains(newPerm))) {
ps.updatePermissionFlags(bp, ps.updatePermissionFlags(bp,
FLAG_PERMISSION_REVOKE_WHEN_REQUESTED, FLAG_PERMISSION_REVOKE_WHEN_REQUESTED,
FLAG_PERMISSION_REVOKE_WHEN_REQUESTED); FLAG_PERMISSION_REVOKE_WHEN_REQUESTED);