diff options
5 files changed, 33 insertions, 3 deletions
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index b0a600bd98dc..69338b0655f6 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -107,7 +107,12 @@ public final class DocumentsContract { public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT"; /** {@hide} */ - public static final String ACTION_BROWSE_ROOT = "android.provider.action.BROWSE_ROOT"; + public static final String + ACTION_BROWSE_DOCUMENT_ROOT = "android.provider.action.BROWSE_DOCUMENT_ROOT"; + + /** {@hide} */ + public static final String + ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS"; /** * Buffer is large enough to rewind past any EXIF headers. @@ -476,6 +481,15 @@ public final class DocumentsContract { * @hide */ public static final int FLAG_ADVANCED = 1 << 17; + + /** + * Flag indicating that this root has settings. + * + * @see #COLUMN_FLAGS + * @see DocumentsContract#ACTION_DOCUMENT_ROOT_SETTINGS + * @hide + */ + public static final int FLAG_HAS_SETTINGS = 1 << 18; } /** diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml index 5c855ca90c72..bf50017a23c0 100644 --- a/packages/DocumentsUI/AndroidManifest.xml +++ b/packages/DocumentsUI/AndroidManifest.xml @@ -41,7 +41,7 @@ <data android:mimeType="vnd.android.document/root" /> </intent-filter> <intent-filter> - <action android:name="android.provider.action.BROWSE_ROOT" /> + <action android:name="android.provider.action.BROWSE_DOCUMENT_ROOT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.document/root" /> </intent-filter> diff --git a/packages/DocumentsUI/res/menu/activity.xml b/packages/DocumentsUI/res/menu/activity.xml index b9b8054d7f70..5b944ab49af2 100644 --- a/packages/DocumentsUI/res/menu/activity.xml +++ b/packages/DocumentsUI/res/menu/activity.xml @@ -60,4 +60,8 @@ <item android:id="@+id/menu_file_size" android:showAsAction="never" /> + <item + android:id="@+id/menu_settings" + android:title="@string/menu_settings" + android:showAsAction="never" /> </menu> diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index 6ce9a3d7081c..1e798eb49dd7 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -235,7 +235,7 @@ public class DocumentsActivity extends BaseActivity { mState.action = ACTION_OPEN_TREE; } else if (DocumentsContract.ACTION_MANAGE_ROOT.equals(action)) { mState.action = ACTION_MANAGE; - } else if (DocumentsContract.ACTION_BROWSE_ROOT.equals(action)) { + } else if (DocumentsContract.ACTION_BROWSE_DOCUMENT_ROOT.equals(action)) { mState.action = ACTION_BROWSE; } else if (ACTION_OPEN_COPY_DESTINATION_STRING.equals(action)) { mState.action = ACTION_OPEN_COPY_DESTINATION; @@ -557,6 +557,7 @@ public class DocumentsActivity extends BaseActivity { final MenuItem list = menu.findItem(R.id.menu_list); final MenuItem advanced = menu.findItem(R.id.menu_advanced); final MenuItem fileSize = menu.findItem(R.id.menu_file_size); + final MenuItem settings = menu.findItem(R.id.menu_settings); sort.setVisible(cwd != null); grid.setVisible(mState.derivedMode != MODE_GRID); @@ -618,6 +619,9 @@ public class DocumentsActivity extends BaseActivity { advanced.setVisible(!(mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE)); fileSize.setVisible(fileSizeVisible); + settings.setVisible((mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE) + && (root.flags & Root.FLAG_HAS_SETTINGS) != 0); + return true; } @@ -657,6 +661,13 @@ public class DocumentsActivity extends BaseActivity { } else if (id == R.id.menu_file_size) { setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this)); return true; + } else if (id == R.id.menu_settings) { + final RootInfo root = getCurrentRoot(); + final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS); + intent.setDataAndType(DocumentsContract.buildRootUri(root.authority, root.rootId), + DocumentsContract.Root.MIME_TYPE_ITEM); + startActivity(intent); + return true; } else { return super.onOptionsItemSelected(item); } diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java index 073d9c7c3003..8f7311853e44 100644 --- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java +++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java @@ -162,6 +162,7 @@ public class ExternalStorageProvider extends DocumentsProvider { } else { root.title = volume.getDescription(getContext()); } + root.flags |= Root.FLAG_HAS_SETTINGS; } root.docId = getDocIdForFile(path); mRoots.add(root); |