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

时间:2017-08-06 22:35:45

标签: android listview mediastore

我正在创建一个应用程序,我希望在列表视图中列出所有pdf,docx,xl​​sx,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,xl​​sx,pptx等其他文件格式时遇到问题,例如当我尝试更改它时String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("docx");它总是返回null

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

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

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

2 个答案:

答案 0 :(得分:1)

  

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

这将因Android操作系统版本而异,如果制造商已经进入并修改了它,可能会受到设备的影响。例如,the definitions from 7.1.2those from 4.1.2不同,例如7.1.2 webp

  

我该怎么办?

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

答案 1 :(得分:0)

您所要做的就是在查询中使用LIKE运算符。 Mime类型在媒体数据库中保存为字符串,因此您只需选择它们即可。您对所有文本文件感兴趣所以字符串以“text /”开头。修改您的选择

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

注意:确保MIME.TYPE和运营商之间有空格。