Android 使用ACTION\u GET\u CONTENT和setType或Intent.EXTRA\u MIME\u类型选择特定的文件类型

Android 使用ACTION\u GET\u CONTENT和setType或Intent.EXTRA\u MIME\u类型选择特定的文件类型,android,android-intent,mime-types,Android,Android Intent,Mime Types,我只想使用Intent.ACTION\u GET\u CONTENT从存储器中选择word、pdf和txt文件。但是带有多个选项的intent.setType不起作用(在android 5.1.1设备中尝试过,甚至pdf文件也变灰,无法选择) 是否可以仅使用intent.setType()获取所有三种文件类型 甚至还特意尝试过。额外的MIME类型 intent.setType("*/*"); intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);

我只想使用
Intent.ACTION\u GET\u CONTENT
从存储器中选择word、pdf和txt文件。但是带有多个选项的
intent.setType
不起作用(在android 5.1.1设备中尝试过,甚至pdf文件也变灰,无法选择)

是否可以仅使用intent.setType()获取所有三种文件类型

甚至还特意尝试过。额外的MIME类型

intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);

尽管
EXTRA\u MIME\u类型
可以工作,只允许选择PDF、word文件,不允许选择其他类型,但它在菜单中列出了“Gallery”选项,并允许从中选择图像/视频(我无法从内部存储中选择图像)。那么,如何禁用此库选项(仅使用
intent.setType()
)时,库选项不显示)

使用Sam建议的
Intent.ACTION\u OPEN\u文档解决问题,而不是
Intent.ACTION\u GET\u CONTENT

对于ACTION_GET_内容,菜单有额外的选项(在图像中用红色框标记),这些选项不支持MIME类型。使用“打开文档”操作时,将不显示这些红色标记的选项

代码:


您是否厌倦了
意图。操作\u打开\u文档
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
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);