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

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

Change-Id: I2f5a3a4f1b95d33757998fed7a11bd2ab93e82d9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jay Sullivan
2022-04-21 17:14:44 +00:00
committed by Automerger Merge Worker

View File

@@ -195,6 +195,11 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
/** All storage permissions */
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 */
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);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
STORAGE_PERMISSIONS.add(Manifest.permission.ACCESS_MEDIA_LOCATION);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_AUDIO);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_IMAGES);
STORAGE_PERMISSIONS.add(Manifest.permission.READ_MEDIA_VIDEO);
READ_MEDIA_AURAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_AUDIO);
READ_MEDIA_VISUAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_VIDEO);
READ_MEDIA_VISUAL_PERMISSIONS.add(Manifest.permission.READ_MEDIA_IMAGES);
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_CONNECT);
NEARBY_DEVICES_PERMISSIONS.add(Manifest.permission.BLUETOOTH_SCAN);
@@ -2070,7 +2075,10 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
PermissionInfo permInfo = getPermissionInfo(
newPackage.getRequestedPermissions().get(i),
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;
}
@@ -3144,7 +3152,9 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
}
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,
FLAG_PERMISSION_REVOKE_WHEN_REQUESTED,
FLAG_PERMISSION_REVOKE_WHEN_REQUESTED);