我想使用ApplicationContext.Current.UserInfo
从存储中选择word,pdf和txt文件。但是Intent.ACTION_GET_CONTENT
有多个选项不起作用(在Android 5.1.1设备中尝试过这个,甚至pdf文件都是灰色的,无法选择)。
intent.setType
是否可以通过使用intent.setType()?
来获取所有三种文件类型甚至尝试使用Intent.EXTRA_MIME_TYPES。
intent.setType("application/msword|text/plain|application/pdf");
即使intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
工作且允许选择PDF,仅限单词文件而且不允许选择其他类型,它会在菜单中列出“图库”选项,并允许从那里选择图像/视频(我不能从内部存储中选择图像)。那么如何禁用此库选项(当我使用EXTRA_MIME_TYPES
时,不显示图库选项)?
答案 0 :(得分:3)
使用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);