diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java index 0f250168cc754..edf384e76504c 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java @@ -300,10 +300,11 @@ public abstract class BaseActivity extends Activity { void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); - openDirectory(doc); + openContainerDocument(doc); } - void openDirectory(DocumentInfo doc) { + void openContainerDocument(DocumentInfo doc) { + checkArgument(doc.isContainer()); mState.stack.push(doc); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_DOWN); diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index 4f4649c6cf8b7..8754f688aaabf 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -421,8 +421,8 @@ public class DocumentsActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, DocumentContext context) { final FragmentManager fm = getFragmentManager(); - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) { // Explicit file picked, return new ExistingFinishTask(doc.derivedUri).executeOnExecutor(getExecutorForCurrentDirectory()); diff --git a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java index f224343f1ed75..cccbbc86407d3 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java @@ -185,8 +185,8 @@ public class DownloadsActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, DocumentContext context) { final FragmentManager fm = getFragmentManager(); - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else { // First try managing the document; we expect manager to filter // based on authority, so we don't grant. diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java index 99d0cf4e50ef0..bf44013c59a98 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java @@ -311,8 +311,8 @@ public class FilesActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, @Nullable DocumentContext siblings) { - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else { openDocument(doc, siblings); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java index dfdc705a16c8d..69b574dd85e5b 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java +++ b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java @@ -243,6 +243,14 @@ public class DocumentInfo implements Durable, Parcelable { return (flags & Document.FLAG_DIR_HIDE_GRID_TITLES) != 0; } + public boolean isArchive() { + return (flags & Document.FLAG_ARCHIVE) != 0; + } + + public boolean isContainer() { + return isDirectory() || isArchive(); + } + public int hashCode() { return derivedUri.hashCode() + mimeType.hashCode(); }