From 21de56a94668e0fda1b8bb4ee4f99a09b40d28fd Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sat, 5 Apr 2014 19:05:24 -0700 Subject: Add directory selection to DocumentsProvider. Introduce new ACTION_PICK_DIRECTORY that allows users to grant access to an entire document subtree. Instead of requiring grants for each individual document, this leverages new prefix URI permission grants by defining new "via"-style URIs: content://com.example/via/12/document/24/ This references document 24 by using a prefix grant given for document 12. Internally, we use isChildDocument() to enforce that 24 is actually a descendant (child, grandchild, etc) of 12. Since this is an optional API, providers indicate support with Root.FLAG_SUPPORTS_DIR_SELECTION. Extend DocumentsUI to support picking directories. Expose createDocument() API to work with returned directories. Offer to canonicalize via-style URIs into direct URIs, generating exact permission grants along the way. Override openAssetFile() to pass through CancellationSignal. Move testing code into ApiDemos. Bug: 10607375 Change-Id: Ifffc1cff878870f8152eb6ca0199c5d014b9cb07 --- packages/DocumentsUI/AndroidManifest.xml | 18 +- packages/DocumentsUI/res/layout/fragment_pick.xml | 48 ++++ packages/DocumentsUI/res/values/strings.xml | 2 + .../com/android/documentsui/DocumentsActivity.java | 63 ++++- .../src/com/android/documentsui/PickFragment.java | 89 +++++++ .../src/com/android/documentsui/RootsCache.java | 6 +- .../src/com/android/documentsui/TestActivity.java | 268 --------------------- .../externalstorage/ExternalStorageProvider.java | 23 +- 8 files changed, 226 insertions(+), 291 deletions(-) create mode 100644 packages/DocumentsUI/res/layout/fragment_pick.xml create mode 100644 packages/DocumentsUI/src/com/android/documentsui/PickFragment.java delete mode 100644 packages/DocumentsUI/src/com/android/documentsui/TestActivity.java (limited to 'packages') diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml index 6b77a7c..159ee66 100644 --- a/packages/DocumentsUI/AndroidManifest.xml +++ b/packages/DocumentsUI/AndroidManifest.xml @@ -9,18 +9,17 @@ android:label="@string/app_label" android:supportsRtl="true"> - - + - + @@ -33,6 +32,10 @@ + + + + @@ -57,14 +60,5 @@ - - - - - - - - - diff --git a/packages/DocumentsUI/res/layout/fragment_pick.xml b/packages/DocumentsUI/res/layout/fragment_pick.xml new file mode 100644 index 0000000..4a2fd03 --- /dev/null +++ b/packages/DocumentsUI/res/layout/fragment_pick.xml @@ -0,0 +1,48 @@ + + + + + + + + + + +