Android中有多种MIME类型

时间:2009-11-08 21:52:25

标签: android android-intent mime-types

有没有办法使用intent.setType()并提供多种广泛类型(例如图片视频)?

我正在使用ACTION_GET_CONTENT。它似乎只使用逗号分隔类型。

6 个答案:

答案 0 :(得分:88)

在Android 4.4中使用Storage Access Framework时,您可以使用EXTRA_MIME_TYPES传递多种mime类型。

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimetypes = {"image/*", "video/*"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(intent, REQUEST_CODE_OPEN);

答案 1 :(得分:18)

实际上,支持多种mime类型。你有没试过它?

例如:intent.setType("image/*,video/*")将显示照片和视频......

对我而言,它有效。它也适合你......

[编辑]:部分工作,因为并非所有图库应用都选择实现对多个mime类型过滤器的支持。

答案 2 :(得分:4)

对我来说最有效的是:

intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);


你可以像这样添加几种mime类型

intent.setType("image/*|application/pdf|audio/*");

但意图选择器只显示可以处理图像的应用程序,因为它是mime类型字符串中的第一个。

但是,如果您安装了文件管理器(我使用CyanogenMod文件管理器进行了测试),您可以选择音频或pdf文件或图像。

如果音频mime类型是第一个,如下所示:

intent.setType("audio/*|image/*|application/pdf");

意图选择器将仅显示处理音频的应用程序 再次使用文件管理器,您可以选择图像或pdf或音频。

答案 3 :(得分:3)

抱歉,目前不支持此功能。您有两种选择:

(1)使用MIME类型*/*并接受用户可以选择的一些您无法处理的东西(并且具有适当的恢复路径);或

(2)实现自己的活动选择器,对包管理器进行直接调用,以获取可以处理意图的MIME类型,合并这些列表并将其显示给用户的活动。

此外,setType()根本不适用于逗号分隔类型。它必须是唯一的一种MIME类型。

答案 4 :(得分:2)

如果用|

分隔,则可以传递多个mime类型
Intent.setType("application/*|text/*");

答案 5 :(得分:-2)

用于分号的工作。

示例:

intent.setType("image/*;video/*")

sIntent.putExtra("CONTENT_TYPE", "image/*;video/*");