Loading packages/Shell/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \ android-support-documents-archive LOCAL_PACKAGE_NAME := Shell LOCAL_CERTIFICATE := platform Loading packages/Shell/src/com/android/shell/BugreportStorageProvider.java +24 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; import android.support.provider.DocumentArchiveHelper; import android.webkit.MimeTypeMap; import java.io.File; Loading @@ -44,10 +45,12 @@ public class BugreportStorageProvider extends DocumentsProvider { }; private File mRoot; private DocumentArchiveHelper mArchiveHelper; @Override public boolean onCreate() { mRoot = new File(getContext().getFilesDir(), "bugreports"); mArchiveHelper = new DocumentArchiveHelper(this, (char) 0); return true; } Loading @@ -66,6 +69,10 @@ public class BugreportStorageProvider extends DocumentsProvider { @Override public Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(documentId)) { return mArchiveHelper.queryDocument(documentId, projection); } final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(documentId)) { final RowBuilder row = result.newRow(); Loading @@ -84,6 +91,11 @@ public class BugreportStorageProvider extends DocumentsProvider { public Cursor queryChildDocuments( String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(parentDocumentId) || mArchiveHelper.isSupportedArchiveType(getDocumentType(parentDocumentId))) { return mArchiveHelper.queryChildDocuments(parentDocumentId, projection, sortOrder); } final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(parentDocumentId)) { final File[] files = mRoot.listFiles(); Loading @@ -100,6 +112,10 @@ public class BugreportStorageProvider extends DocumentsProvider { public ParcelFileDescriptor openDocument( String documentId, String mode, CancellationSignal signal) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(documentId)) { return mArchiveHelper.openDocument(documentId, mode, signal); } if (ParcelFileDescriptor.parseMode(mode) != ParcelFileDescriptor.MODE_READ_ONLY) { throw new FileNotFoundException("Failed to open: " + documentId + ", mode = " + mode); } Loading Loading @@ -153,12 +169,18 @@ public class BugreportStorageProvider extends DocumentsProvider { } private void addFileRow(MatrixCursor result, File file) { String mimeType = getTypeForName(file.getName()); int flags = Document.FLAG_SUPPORTS_DELETE; if (mArchiveHelper.isSupportedArchiveType(mimeType)) { flags |= Document.FLAG_ARCHIVE; } final RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, getDocIdForFile(file)); row.add(Document.COLUMN_MIME_TYPE, getTypeForName(file.getName())); row.add(Document.COLUMN_MIME_TYPE, mimeType); row.add(Document.COLUMN_DISPLAY_NAME, file.getName()); row.add(Document.COLUMN_LAST_MODIFIED, file.lastModified()); row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE); row.add(Document.COLUMN_FLAGS, flags); row.add(Document.COLUMN_SIZE, file.length()); } } Loading
packages/Shell/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -5,7 +5,8 @@ LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 \ android-support-documents-archive LOCAL_PACKAGE_NAME := Shell LOCAL_CERTIFICATE := platform Loading
packages/Shell/src/com/android/shell/BugreportStorageProvider.java +24 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; import android.support.provider.DocumentArchiveHelper; import android.webkit.MimeTypeMap; import java.io.File; Loading @@ -44,10 +45,12 @@ public class BugreportStorageProvider extends DocumentsProvider { }; private File mRoot; private DocumentArchiveHelper mArchiveHelper; @Override public boolean onCreate() { mRoot = new File(getContext().getFilesDir(), "bugreports"); mArchiveHelper = new DocumentArchiveHelper(this, (char) 0); return true; } Loading @@ -66,6 +69,10 @@ public class BugreportStorageProvider extends DocumentsProvider { @Override public Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(documentId)) { return mArchiveHelper.queryDocument(documentId, projection); } final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(documentId)) { final RowBuilder row = result.newRow(); Loading @@ -84,6 +91,11 @@ public class BugreportStorageProvider extends DocumentsProvider { public Cursor queryChildDocuments( String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(parentDocumentId) || mArchiveHelper.isSupportedArchiveType(getDocumentType(parentDocumentId))) { return mArchiveHelper.queryChildDocuments(parentDocumentId, projection, sortOrder); } final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(parentDocumentId)) { final File[] files = mRoot.listFiles(); Loading @@ -100,6 +112,10 @@ public class BugreportStorageProvider extends DocumentsProvider { public ParcelFileDescriptor openDocument( String documentId, String mode, CancellationSignal signal) throws FileNotFoundException { if (mArchiveHelper.isArchivedDocument(documentId)) { return mArchiveHelper.openDocument(documentId, mode, signal); } if (ParcelFileDescriptor.parseMode(mode) != ParcelFileDescriptor.MODE_READ_ONLY) { throw new FileNotFoundException("Failed to open: " + documentId + ", mode = " + mode); } Loading Loading @@ -153,12 +169,18 @@ public class BugreportStorageProvider extends DocumentsProvider { } private void addFileRow(MatrixCursor result, File file) { String mimeType = getTypeForName(file.getName()); int flags = Document.FLAG_SUPPORTS_DELETE; if (mArchiveHelper.isSupportedArchiveType(mimeType)) { flags |= Document.FLAG_ARCHIVE; } final RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, getDocIdForFile(file)); row.add(Document.COLUMN_MIME_TYPE, getTypeForName(file.getName())); row.add(Document.COLUMN_MIME_TYPE, mimeType); row.add(Document.COLUMN_DISPLAY_NAME, file.getName()); row.add(Document.COLUMN_LAST_MODIFIED, file.lastModified()); row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE); row.add(Document.COLUMN_FLAGS, flags); row.add(Document.COLUMN_SIZE, file.length()); } }