我只想选择word,pdf和txt文件从存储中使用Intent.ACTION_GET_CONTENT
。但是带有多个选项的intent.setType
不起作用(在android 5.1.1设备上尝试过这个功能,甚至pdf文件都是灰色的,无法选择)。
intent.setType("application/msword|text/plain|application/pdf");
仅仅使用intent.setType()就可以获得所有三种文件类型吗?
甚至还在Intent.EXTRA_MIME_TYPES上尝试过。
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
尽管EXTRA_MIME_TYPES
只允许选择PDF,word文件,不允许选择其他类型,但它在菜单中列出了"Gallery“选项,并允许从那里选择图像/视频(我不能从内存中选择图像)。那么我如何禁用这个图库选项(当我只使用intent.setType()
时,图库选项不显示)?
发布于 2018-05-28 20:01:16
按照Sam的建议,使用Intent.ACTION_OPEN_DOCUMENT
而不是Intent.ACTION_GET_CONTENT
来解决此问题。
对于ACTION_GET_CONTENT,菜单有额外的选项(在图像中用红色方框标记),这些选项不支持MIME类型。使用ACTION_OPEN_DOCUMENT时,这些标记为红色的选项将不会显示。
代码:
String[] supportedMimeTypes = {"application/pdf","application/msword"};
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
intent.setType(supportedMimeTypes.length == 1 ? supportedMimeTypes[0] : "*/*");
if (supportedMimeTypes.length > 0) {
intent.putExtra(Intent.EXTRA_MIME_TYPES, supportedMimeTypes);
}
} else {
String mimeTypes = "";
for (String mimeType : supportedMimeTypes) {
mimeTypes += mimeType + "|";
}
intent.setType(mimeTypes.substring(0,mimeTypes.length() - 1));
}
startActivityForResult(intent, REQUEST_CODE);
https://stackoverflow.com/questions/50386916
复制相似问题