android 中 getMimeTypeFromExtension() 支持的文件格式是什么

What are the supported file formats of getMimeTypeFromExtension() in android

我正在创建一个应用程序,我想在其中列出列表视图中的所有 pdf、docx、xlsx、pptx、txt。

这就是我到目前为止所做的。

Uri uri = MediaStore.Files.getContentUri("external");

    String[] projection ={ MediaStore.Files.FileColumns._ID,
            MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns.MIME_TYPE} ;

    String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?";
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("txt");
    String[] selectionArgsPdf = new String[]{ mimeType};
    String sortOrder = null;

    Cursor allPdfFiles = getContentResolver().query(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder);


    if (allPdfFiles.moveToFirst()) {
        do {

            ImageViewInfo newVVI = new ImageViewInfo();
            int id = allPdfFiles.getInt(allPdfFiles.getColumnIndex(MediaStore.Files.FileColumns._ID));


            newVVI.filePath = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA));
            newVVI.title = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE));
            newVVI.mimeType = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE));
            ImageRows.add(newVVI);
        } while (allPdfFiles.moveToNext());


        allPdfFiles.close();

    }

我在获取其他文件格式如 docx、xlsx、pptx 时遇到问题,例如当我尝试更改它时 String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("docx"); 它总是 return null

但是当它是 getMimeTypeFromExtension("pdf")getMimeTypeFromExtension("txt") 时它工作正常。

getMimeTypeFromExtension()支持哪些文件格式?

我该怎么办?你能指出我哪里做错了吗?如果可能的话,你能建议一个解决方案吗?先感谢您!非常感谢。

what are the supported file formats of getMimeTypeFromExtension()?

这将因 Android OS 版本而异,如果制造商已经介入并对其进行修补,则可能因设备而异。例如,the definitions from 7.1.2 differ from those from 4.1.2,例如 7.1.2 具有 webp

what should i do?

在您自己的应用程序中对它们进行硬编码。

您只需在查询中使用 LIKE 运算符即可。 Mime 类型在媒体数据库中作为字符串保存,因此您可以 select 它们。您对以 "text/" 开头的所有文本文件感兴趣。修正你的 selection

 String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + " LIKE?";
 String mimeType = "txt/";

注意:确保 MIME.TYPE 和运算符之间有一个 space。