Multiple MIME types in Android

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

Is there a way to use intent.setType() and supply multiple broad types (like images and video)?

I am using an ACTION_GET_CONTENT. It seems to be working with just comma-separated types.

回答1:

In Android 4.4 when using the Storage Access Framework you can use the EXTRA_MIME_TYPES to pass multiple mime types.

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


回答2:

Actually, multiple mime-types are supported. Have you even tried it???

For example: intent.setType("image/*,video/*") will display photos and videos...

For me it works. It should work for you too...



回答3:

Sorry, this is not currently supported. You have two options:

(1) Use a MIME type of */* and accept that there may be some things the user can pick that you won't be able to handle (and have a decent recovery path for that); or

(2) Implement your own activity chooser, doing direct calls on the package manager to get the activities that can handle both MIME types for the intent, merging those lists, and displaying them to the user.

Also, setType() does not work with comma-separated types at all. It must be one and only one MIME type.



回答4:

you can pass multiple mime types if you separate with |

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


回答5:

for my work with semicolons.

Example:

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

or

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


回答6:

For me what worked best was:

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


You can add several mime types like this

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

But the intent chooser will only display applications that can handle images because it is the first in the mime type string.

However if you have a file manager installed (I tested with the CyanogenMod file manager) you can choose a file that is audio or pdf or an image.

If the audio mime type is the first one, like this:

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

The intent chooser will display only applications that handle audio.
Again using the file manager you can select an image or pdf or audio.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!