web-dev-qa-db-fra.com

Différence entre Intent.ACTION_GET_CONTENT et Intent.ACTION_PICK

J'essaie de laisser l'utilisateur choisir n'importe quelle image qu'il souhaite sur son appareil pour l'utiliser comme fond d'écran dans cette application de fond d'écran que je crée. Pour une raison quelconque quand j'écris:

Intent myIntent = new Intent(Intent.ACTION_PICK);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

J'entre directement dans la galerie, mais quand j'écris:

Intent myIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

Je peux choisir entre Galerie ou Google Drive. Quelle est la meilleure façon de laisser l'utilisateur choisir à partir de quelle application récupérer l'image à chaque fois? Ou pourquoi ces deux constantes d'intention différentes font-elles une différence?

64
EGHDK

Votre premier Intent n'est pas valide. Le protocole pour ACTION_PICK vous oblige à fournir un Uri indiquant la collection que vous choisissez.

Quelle est la meilleure façon de laisser l'utilisateur choisir à partir de quelle application récupérer l'image à chaque fois?

Si vous souhaitez que l'utilisateur choisisse quelque chose en fonction du type MIME, utilisez ACTION_GET_CONTENT.

Si vous avez une collection spécifique (identifiée par un Uri) parmi laquelle vous souhaitez que l'utilisateur choisisse, utilisez ACTION_PICK.

En cas d'égalité, allez avec ACTION_GET_CONTENT. Tandis que ACTION_PICK n'est pas formellement déconseillé, Dianne Hackborn recommande ACTION_GET_CONTENT .

92
CommonsWare

L'action moderne est ACTION_GET_CONTENT, qui est beaucoup mieux supporté ,

ACTION_PICK:

Action Action: Choisissez un élément parmi les données, en retournant ce qui a été sélectionné.

Entrée: getData () est l'URI contenant un répertoire de données (vnd.Android.cursor.dir/*) à partir duquel choisir un élément.

Sortie: L'URI de l'élément qui a été sélectionné.

Valeur constante: "Android.intent.action.PICK"


Différence : -

Action Action: Autoriser l'utilisateur à sélectionner un type particulier de données et à le renvoyer .

Ceci est différent de ACTION_PICK en ce que nous disons ici quel type de données est souhaité, pas un URI de données existantes à partir desquelles l'utilisateur peut choisir.

A ACTION_GET_CONTENT pourrait permettre à l'utilisateur de créer les données pendant son exécution (par exemple prendre une photo ou enregistrer un son ), laissez-les parcourir le Web et télécharger les données souhaitées, etc.

Référence http://developer.Android.com/reference/Android/content/Intent.html#ACTION_GET_CONTENT

14
Tarsem Singh