Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b49cedf0 authored by Amin Shaikh's avatar Amin Shaikh
Browse files

Deprecated scoped directory access.

- Deprecate StorageVolume#createAccessIntent and
Settings#ACTION_STORAGE_VOLUME_ACCESS_SETTINGS
- Delete StorageVolume#ScopedAccessProviderContract

Bug: 111892460
Test: atest \
	cts/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java \
	cts/tests/tests/os/src/android/os/storage/cts/StorageManagerTest.java \
	cts/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/ScopedDirectoryAccessClientTest.java

Change-Id: I2d0dcc87d5b18a6424cb73384a88cdd2cabe0f4d
parent 31e71313
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -34296,7 +34296,7 @@ package android.os.storage {
  }
  }
  public final class StorageVolume implements android.os.Parcelable {
  public final class StorageVolume implements android.os.Parcelable {
    method public android.content.Intent createAccessIntent(java.lang.String);
    method public deprecated android.content.Intent createAccessIntent(java.lang.String);
    method public int describeContents();
    method public int describeContents();
    method public java.lang.String getDescription(android.content.Context);
    method public java.lang.String getDescription(android.content.Context);
    method public java.lang.String getState();
    method public java.lang.String getState();
@@ -37315,7 +37315,7 @@ package android.provider {
    field public static final java.lang.String ACTION_SETTINGS = "android.settings.SETTINGS";
    field public static final java.lang.String ACTION_SETTINGS = "android.settings.SETTINGS";
    field public static final java.lang.String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
    field public static final java.lang.String ACTION_SHOW_REGULATORY_INFO = "android.settings.SHOW_REGULATORY_INFO";
    field public static final java.lang.String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
    field public static final java.lang.String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS";
    field public static final java.lang.String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
    field public static final deprecated java.lang.String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
    field public static final java.lang.String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
    field public static final java.lang.String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS";
    field public static final java.lang.String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
    field public static final java.lang.String ACTION_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS";
    field public static final java.lang.String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
    field public static final java.lang.String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS";
+5 −28
Original line number Original line Diff line number Diff line
@@ -331,7 +331,12 @@ public final class StorageVolume implements Parcelable {
     * @return intent to request access, or {@code null} if the requested directory is invalid for
     * @return intent to request access, or {@code null} if the requested directory is invalid for
     *         that volume.
     *         that volume.
     * @see DocumentsContract
     * @see DocumentsContract
     * @deprecated Callers should migrate to using {@link Intent#ACTION_OPEN_DOCUMENT_TREE} instead.
     *             Launching this {@link Intent} on devices running
     *             {@link android.os.Build.VERSION_CODES#Q} or higher, will immediately finish
     *             with a result code of {@link android.app.Activity#RESULT_CANCELED}.
     */
     */
    @Deprecated
    public @Nullable Intent createAccessIntent(String directoryName) {
    public @Nullable Intent createAccessIntent(String directoryName) {
        if ((isPrimary() && directoryName == null) ||
        if ((isPrimary() && directoryName == null) ||
                (directoryName != null && !Environment.isStandardDirectory(directoryName))) {
                (directoryName != null && !Environment.isStandardDirectory(directoryName))) {
@@ -425,32 +430,4 @@ public final class StorageVolume implements Parcelable {
        parcel.writeString(mFsUuid);
        parcel.writeString(mFsUuid);
        parcel.writeString(mState);
        parcel.writeString(mState);
    }
    }

    /** {@hide} */
    public static final class ScopedAccessProviderContract {

        private ScopedAccessProviderContract() {
            throw new UnsupportedOperationException("contains constants only");
        }

        public static final String AUTHORITY = "com.android.documentsui.scopedAccess";

        public static final String TABLE_PACKAGES = "packages";
        public static final String TABLE_PERMISSIONS = "permissions";

        public static final String COL_PACKAGE = "package_name";
        public static final String COL_VOLUME_UUID = "volume_uuid";
        public static final String COL_DIRECTORY = "directory";
        public static final String COL_GRANTED = "granted";

        public static final String[] TABLE_PACKAGES_COLUMNS = new String[] { COL_PACKAGE };
        public static final String[] TABLE_PERMISSIONS_COLUMNS =
                new String[] { COL_PACKAGE, COL_VOLUME_UUID, COL_DIRECTORY, COL_GRANTED };

        public static final int TABLE_PACKAGES_COL_PACKAGE = 0;
        public static final int TABLE_PERMISSIONS_COL_PACKAGE = 0;
        public static final int TABLE_PERMISSIONS_COL_VOLUME_UUID = 1;
        public static final int TABLE_PERMISSIONS_COL_DIRECTORY = 2;
        public static final int TABLE_PERMISSIONS_COL_GRANTED = 3;
    }
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -1591,8 +1591,11 @@ public final class Settings {
     * Applications typically use this action to ask the user to revert the "Do not ask again"
     * Applications typically use this action to ask the user to revert the "Do not ask again"
     * status of directory access requests made by
     * status of directory access requests made by
     * {@link android.os.storage.StorageVolume#createAccessIntent(String)}.
     * {@link android.os.storage.StorageVolume#createAccessIntent(String)}.
     * @deprecated use {@link #ACTION_APPLICATION_DETAILS_SETTINGS} to manage storage permissions
     *             for a specific application
     */
     */
    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
    @Deprecated
    public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS =
    public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS =
            "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";
            "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";