diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index b0a600bd98dc8..69338b0655f6c 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 5c855ca90c726..bf50017a23c0b 100644
--- a/packages/DocumentsUI/AndroidManifest.xml
+++ b/packages/DocumentsUI/AndroidManifest.xml
@@ -41,7 +41,7 @@
-
+
diff --git a/packages/DocumentsUI/res/menu/activity.xml b/packages/DocumentsUI/res/menu/activity.xml
index b9b8054d7f700..5b944ab49af24 100644
--- a/packages/DocumentsUI/res/menu/activity.xml
+++ b/packages/DocumentsUI/res/menu/activity.xml
@@ -60,4 +60,8 @@
+
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 6ce9a3d7081c5..1e798eb49dd7d 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 073d9c7c30034..8f7311853e447 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);