From b49cedf0b3440fbc676d9753741284cf41337e02 Mon Sep 17 00:00:00 2001 From: Amin Shaikh Date: Tue, 23 Oct 2018 13:37:19 -0400 Subject: [PATCH] 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 --- api/current.txt | 4 +-- .../android/os/storage/StorageVolume.java | 33 +++---------------- core/java/android/provider/Settings.java | 3 ++ 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/api/current.txt b/api/current.txt index ead6157b58d79..903959a2f7d6b 100755 --- a/api/current.txt +++ b/api/current.txt @@ -34296,7 +34296,7 @@ package android.os.storage { } 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 java.lang.String getDescription(android.content.Context); 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_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_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_USAGE_ACCESS_SETTINGS = "android.settings.USAGE_ACCESS_SETTINGS"; field public static final java.lang.String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS"; diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java index 5bef7ee0e6192..8a03e9eb75079 100644 --- a/core/java/android/os/storage/StorageVolume.java +++ b/core/java/android/os/storage/StorageVolume.java @@ -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 * that volume. * @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) { if ((isPrimary() && directoryName == null) || (directoryName != null && !Environment.isStandardDirectory(directoryName))) { @@ -425,32 +430,4 @@ public final class StorageVolume implements Parcelable { parcel.writeString(mFsUuid); 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; - } } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 0ef56b0c5d2d4..a4c250ce1f0bb 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1591,8 +1591,11 @@ public final class Settings { * Applications typically use this action to ask the user to revert the "Do not ask again" * status of directory access requests made by * {@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) + @Deprecated public static final String ACTION_STORAGE_VOLUME_ACCESS_SETTINGS = "android.settings.STORAGE_VOLUME_ACCESS_SETTINGS";