Plusieurs types MIME dans Android

Existe-t-il un moyen d’utiliser intent.setType() et de fournir plusieurs types généraux (comme des images et des vidéos)?

J’utilise un ACTION_GET_CONTENT . Il semble fonctionner uniquement avec des types séparés par des virgules.

Dans Android 4.4, lorsque vous utilisez Storage Access Framework, vous pouvez utiliser EXTRA_MIME_TYPES pour transmettre plusieurs types EXTRA_MIME_TYPES .

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

En fait, plusieurs types MIME sont pris en charge. Avez-vous même essayé ???

Par exemple: intent.setType("image/*,video/*") affichera des photos et des vidéos …

Pour moi ça marche. Ça devrait marcher pour toi aussi …

Désolé, ce n’est pas actuellement pris en charge. Vous avez deux options:

(1) Utilisez un type MIME de */* et acceptez que l’utilisateur puisse choisir certaines choses que vous ne pourrez pas gérer (et disposer d’un chemin de restauration correct pour cela); ou

(2) Implémentez votre propre sélecteur d’activité, en effectuant des appels directs sur le gestionnaire de packages pour obtenir les activités capables de gérer les deux types MIME pour l’intention, en fusionnant ces listes et en les affichant à l’utilisateur.

En outre, setType() ne fonctionne pas du tout avec les types séparés par des virgules. Il doit s’agir d’un seul et unique type MIME.

vous pouvez passer plusieurs types de mime si vous séparez avec |

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

Pour moi, ce qui fonctionnait le mieux était:

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

Vous pouvez append plusieurs types de mime comme celui-ci

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

Mais le sélecteur d’intention affichera uniquement les applications pouvant gérer les images, car il s’agit du premier élément de la chaîne de type MIME.

Cependant, si vous avez un gestionnaire de fichiers installé (j’ai testé avec le gestionnaire de fichiers CyanogenMod), vous pouvez choisir un fichier audio ou pdf ou une image.

Si le type de mime audio est le premier, comme ceci:

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

Le sélecteur d’intention affichera uniquement les applications gérant l’audio.
En utilisant à nouveau le gestionnaire de fichiers, vous pouvez sélectionner une image ou un fichier pdf ou audio.

pour mon travail avec des points-virgules.

Exemple:

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

ou

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