我正在创建一个应用程序,我希望在列表视图中列出所有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");
它总是返回null
但当getMimeTypeFromExtension("pdf")
或getMimeTypeFromExtension("txt")
工作正常时。
getMimeTypeFromExtension()
支持的文件格式是什么?
我该怎么办?你能指出我做错了吗?如果可能的话,你可以建议一个解决方案。先感谢您!我真的很感激。
答案 0 :(得分:1)
getMimeTypeFromExtension()支持的文件格式是什么?
这将因Android操作系统版本而异,如果制造商已经进入并修改了它,可能会受到设备的影响。例如,the definitions from 7.1.2与those 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和运营商之间有空格。