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。
我正在创建一个应用程序,我想在其中列出列表视图中的所有 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。