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/*");