summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/DocumentsContract.java16
-rw-r--r--packages/DocumentsUI/AndroidManifest.xml2
-rw-r--r--packages/DocumentsUI/res/menu/activity.xml4
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java13
-rw-r--r--packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java1
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);