diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java index b44f9af3c3bc7..8a3ebefa127ff 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDatabase.java @@ -577,9 +577,7 @@ class MtpDatabase { static void getObjectDocumentValues( ContentValues values, int deviceId, String parentId, MtpObjectInfo info) { values.clear(); - final String mimeType = info.getFormat() == MtpConstants.FORMAT_ASSOCIATION ? - DocumentsContract.Document.MIME_TYPE_DIR : - MediaFile.getMimeTypeForFormatCode(info.getFormat()); + final String mimeType = getMimeType(info); int flag = 0; if (info.getProtectionStatus() == 0) { flag |= Document.FLAG_SUPPORTS_DELETE | @@ -608,6 +606,17 @@ class MtpDatabase { values.put(Document.COLUMN_SIZE, info.getCompressedSize()); } + private static String getMimeType(MtpObjectInfo info) { + if (info.getFormat() == MtpConstants.FORMAT_ASSOCIATION) { + return DocumentsContract.Document.MIME_TYPE_DIR; + } + final String formatCodeMimeType = MediaFile.getMimeTypeForFormatCode(info.getFormat()); + if (formatCodeMimeType != null) { + return formatCodeMimeType; + } + return MediaFile.getMimeTypeForFile(info.getName()); + } + static String[] strings(Object... args) { final String[] results = new String[args.length]; for (int i = 0; i < args.length; i++) { diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsProvider.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsProvider.java index 70a1aae86b959..033845401b4b2 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsProvider.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocumentsProvider.java @@ -184,6 +184,9 @@ public class MtpDocumentsProvider extends DocumentsProvider { public ParcelFileDescriptor openDocument( String documentId, String mode, CancellationSignal signal) throws FileNotFoundException { + if (DEBUG) { + Log.d(TAG, "openDocument: " + documentId); + } final Identifier identifier = mDatabase.createIdentifier(documentId); try { openDevice(identifier.mDeviceId); @@ -270,6 +273,9 @@ public class MtpDocumentsProvider extends DocumentsProvider { @Override public String createDocument(String parentDocumentId, String mimeType, String displayName) throws FileNotFoundException { + if (DEBUG) { + Log.d(TAG, "createDocument: " + displayName); + } try { final Identifier parentId = mDatabase.createIdentifier(parentDocumentId); openDevice(parentId.mDeviceId);