kum*_*mar 3 android android-intent mime-types
我想使用Intent.ACTION_GET_CONTENT. 但是intent.setType有多个选项不起作用(在 android 5.1.1 设备中尝试过这个,甚至 pdf 文件都是灰色的,无法选择)。
intent.setType("application/msword|text/plain|application/pdf");
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用 intent.setType() 来获取所有三种文件类型?
甚至用 Intent.EXTRA_MIME_TYPES 尝试过这个。
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
Run Code Online (Sandbox Code Playgroud)
即使EXTRA_MIME_TYPES工作并允许选择PDF,word文件并且不允许选择其他类型,它在菜单中列出了“图库”选项并允许从那里选择图像/视频(我无法从内部存储中选择图像)。那么如何禁用此画廊选项(仅使用时不显示画廊选项intent.setType())?
使用Intent.ACTION_OPEN_DOCUMENTSam 建议的而不是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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4140 次 |
| 最近记录: |