Loading core/java/android/provider/MediaStore.java +16 −9 Original line number Diff line number Diff line Loading @@ -3304,6 +3304,14 @@ public final class MediaStore { @TestApi public static @NonNull File getVolumePath(@NonNull String volumeName) throws FileNotFoundException { final StorageManager sm = AppGlobals.getInitialApplication() .getSystemService(StorageManager.class); return getVolumePath(sm.getVolumes(), volumeName); } /** {@hide} */ public static @NonNull File getVolumePath(@NonNull List<VolumeInfo> volumes, @NonNull String volumeName) throws FileNotFoundException { if (TextUtils.isEmpty(volumeName)) { throw new IllegalArgumentException(); } Loading @@ -3312,19 +3320,18 @@ public final class MediaStore { case VOLUME_INTERNAL: case VOLUME_EXTERNAL: throw new FileNotFoundException(volumeName + " has no associated path"); case VOLUME_EXTERNAL_PRIMARY: return Environment.getExternalStorageDirectory(); } final StorageManager sm = AppGlobals.getInitialApplication() .getSystemService(StorageManager.class); for (VolumeInfo vi : sm.getVolumes()) { if (Objects.equals(vi.getNormalizedFsUuid(), volumeName)) { final File path = vi.getPathForUser(UserHandle.myUserId()); final boolean wantPrimary = VOLUME_EXTERNAL_PRIMARY.equals(volumeName); for (VolumeInfo volume : volumes) { final boolean matchPrimary = wantPrimary && volume.isPrimary(); final boolean matchSecondary = !wantPrimary && Objects.equals(volume.getNormalizedFsUuid(), volumeName); if (matchPrimary || matchSecondary) { final File path = volume.getPathForUser(UserHandle.myUserId()); if (path != null) { return path; } else { throw new FileNotFoundException("Failed to find path for " + vi); } } } Loading core/res/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -4434,7 +4434,7 @@ <!-- Allows an application to watch changes and/or active state of app ops. @hide <p>Not for use by third-party applications. --> <permission android:name="android.permission.WATCH_APPOPS" android:protectionLevel="signature" /> android:protectionLevel="signature|privileged" /> <!-- Allows an application to directly open the "Open by default" page inside a package's Details screen. Loading data/etc/privapp-permissions-platform.xml +1 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ applications that come with the platform <permission name="android.permission.MANAGE_USERS"/> <permission name="android.permission.USE_RESERVED_DISK"/> <permission name="android.permission.WRITE_MEDIA_STORAGE"/> <permission name="android.permission.WATCH_APPOPS"/> </privapp-permissions> <privapp-permissions package="com.android.providers.telephony"> Loading packages/Shell/AndroidManifest.xml +0 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,6 @@ <!-- Permission needed to enable/disable Bluetooth/Wifi --> <uses-permission android:name="android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED" /> <uses-permission android:name="android.permission.MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED" /> <uses-permission android:name="android.permission.WATCH_APPOPS" /> <!-- Permission needed to invoke DynamicSystem (AOT) --> <uses-permission android:name="android.permission.INSTALL_DYNAMIC_SYSTEM" /> Loading packages/SystemUI/AndroidManifest.xml +0 −3 Original line number Diff line number Diff line Loading @@ -222,9 +222,6 @@ <!-- to change themes - light or dark --> <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" /> <!-- Listen app op changes --> <uses-permission android:name="android.permission.WATCH_APPOPS" /> <!-- to read and change hvac values in a car --> <uses-permission android:name="android.car.permission.CONTROL_CAR_CLIMATE" /> Loading Loading
core/java/android/provider/MediaStore.java +16 −9 Original line number Diff line number Diff line Loading @@ -3304,6 +3304,14 @@ public final class MediaStore { @TestApi public static @NonNull File getVolumePath(@NonNull String volumeName) throws FileNotFoundException { final StorageManager sm = AppGlobals.getInitialApplication() .getSystemService(StorageManager.class); return getVolumePath(sm.getVolumes(), volumeName); } /** {@hide} */ public static @NonNull File getVolumePath(@NonNull List<VolumeInfo> volumes, @NonNull String volumeName) throws FileNotFoundException { if (TextUtils.isEmpty(volumeName)) { throw new IllegalArgumentException(); } Loading @@ -3312,19 +3320,18 @@ public final class MediaStore { case VOLUME_INTERNAL: case VOLUME_EXTERNAL: throw new FileNotFoundException(volumeName + " has no associated path"); case VOLUME_EXTERNAL_PRIMARY: return Environment.getExternalStorageDirectory(); } final StorageManager sm = AppGlobals.getInitialApplication() .getSystemService(StorageManager.class); for (VolumeInfo vi : sm.getVolumes()) { if (Objects.equals(vi.getNormalizedFsUuid(), volumeName)) { final File path = vi.getPathForUser(UserHandle.myUserId()); final boolean wantPrimary = VOLUME_EXTERNAL_PRIMARY.equals(volumeName); for (VolumeInfo volume : volumes) { final boolean matchPrimary = wantPrimary && volume.isPrimary(); final boolean matchSecondary = !wantPrimary && Objects.equals(volume.getNormalizedFsUuid(), volumeName); if (matchPrimary || matchSecondary) { final File path = volume.getPathForUser(UserHandle.myUserId()); if (path != null) { return path; } else { throw new FileNotFoundException("Failed to find path for " + vi); } } } Loading
core/res/AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -4434,7 +4434,7 @@ <!-- Allows an application to watch changes and/or active state of app ops. @hide <p>Not for use by third-party applications. --> <permission android:name="android.permission.WATCH_APPOPS" android:protectionLevel="signature" /> android:protectionLevel="signature|privileged" /> <!-- Allows an application to directly open the "Open by default" page inside a package's Details screen. Loading
data/etc/privapp-permissions-platform.xml +1 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,7 @@ applications that come with the platform <permission name="android.permission.MANAGE_USERS"/> <permission name="android.permission.USE_RESERVED_DISK"/> <permission name="android.permission.WRITE_MEDIA_STORAGE"/> <permission name="android.permission.WATCH_APPOPS"/> </privapp-permissions> <privapp-permissions package="com.android.providers.telephony"> Loading
packages/Shell/AndroidManifest.xml +0 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,6 @@ <!-- Permission needed to enable/disable Bluetooth/Wifi --> <uses-permission android:name="android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED" /> <uses-permission android:name="android.permission.MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED" /> <uses-permission android:name="android.permission.WATCH_APPOPS" /> <!-- Permission needed to invoke DynamicSystem (AOT) --> <uses-permission android:name="android.permission.INSTALL_DYNAMIC_SYSTEM" /> Loading
packages/SystemUI/AndroidManifest.xml +0 −3 Original line number Diff line number Diff line Loading @@ -222,9 +222,6 @@ <!-- to change themes - light or dark --> <uses-permission android:name="android.permission.CHANGE_OVERLAY_PACKAGES" /> <!-- Listen app op changes --> <uses-permission android:name="android.permission.WATCH_APPOPS" /> <!-- to read and change hvac values in a car --> <uses-permission android:name="android.car.permission.CONTROL_CAR_CLIMATE" /> Loading