Android中的多种MIMEtypes

有没有办法使用intent.setType()并提供多种types(如图像video)?

我正在使用ACTION_GET_CONTENT 。 它似乎只用逗号分隔的types工作。

在使用存储访问框架的 Android 4.4中,您可以使用EXTRA_MIME_TYPES传递多个MIMEtypes。

 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); 

实际上,支持多种MIMEtypes。 你甚至试过吗?

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

对我来说,它的作品。 它也应该为你工作…

对不起,目前尚不支持。 你有两个select:

(1)使用MIMEtypes的*/*并接受用户可以select的某些东西,这些东西你将无法处理(并且有一个体面的恢复path); 要么

(2)实现你自己的活动select器,在包pipe理器上直接调用以获取能够处理这两种MIMEtypes的活动,合并这些列表并将它们显示给用户。

而且, setType()根本不适用于逗号分隔的types。 它必须是唯一一个MIMEtypes。

如果使用|分隔,则可以传递多个MIMEtypes

 Intent.setType("application/*|text/*"); 

对我来说最好的是:

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

你可以添加几个这样的MIMEtypes

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

但意图select器将只显示可以处理图像的应用程序,因为它是mimetypesstring中的第一个。

但是,如果你有一个文件pipe理器安装(我用CyanogenMod文件pipe理器testing),你可以select一个文件,audio或PDF或图像。

如果audioMIMEtypes是第一个,如下所示:

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

意向select器将只显示处理audio的应用程序。
再次使用文件pipe理器,您可以select一个图像或PDF或audio。

我的分号工作。

例:

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

要么

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