123 votes

A quoi sert "Android.intent.category.DEFAULT" ?

Quel est le but de l'utilisation de android.intent.category.DEFAULT dans le champ Catégorie des filtres d'intention ?

2 votes

Vous dites que c'est le point d'entrée par défaut de votre application. Voyez : developer.Android.com/reference/Android/content/

0 votes

@Blundell : donc, si une intention implicite arrive, une activité dont la catégorie est default dans le filtre d'intention sera appelée ?

1 votes

Je crois qu'il est utilisé pour impliquer que c'est l'activité à utiliser oui "il est destiné à être utilisé dans les filtres d'intention spécifiés dans les paquets".

139voto

Comptrol Points 4415

Les catégories sont utilisées pour les intentions implicites. Ainsi, si votre activité peut être lancée par une intention implicite lorsqu'aucune autre catégorie spécifique n'est assignée à l'activité, le filtre d'intention de l'activité devrait inclure cette catégorie. (même si vous avez d'autres catégories dans le filtre Intent). Si vous êtes sûr que votre activité debe être appelé avec n'importe quelle autre catégorie, n'utilisez pas la catégorie par défaut.

Le fait de définir la catégorie par défaut ne signifie pas que cette activité sera utilisée par défaut lors du lancement de votre application. L'activité indique simplement au système que " Oh, je pourrais être lancé, même si la catégorie de l'intention de départ est définie sur Rien du tout ! "

36 votes

C'était en fait une explication compréhensible. Comparez cette réponse à la documentation : "Définir si l'activité doit être une option pour l'action par défaut (appui central) à effectuer sur un élément de données. Définir ceci cachera à l'utilisateur toutes les activités qui n'ont pas cette option lorsqu'elles effectuent une action sur certaines données". Comment est-ce difficile d'écrire une description compréhensible...

0 votes

Je ne suis pas sûr de son mandat, car il semble être facultatif, puisqu'une activité sans filtre d'intention peut toujours être appelée activité implicite.

0 votes

@humblerookie vous êtes sûr ? La documentation dit que c'est nécessaire : " Notez également la catégorie DEFAULT fournie ici : elle est nécessaire pour que la méthode Context.startActivity résolve votre activité lorsque le nom de son composant n'est pas explicitement spécifié. "

36voto

Bruno Ranschaert Points 2002

Cette catégorie est principalement utilisée pour les intentions implicites. Si votre activité souhaite être lancée par une intention implicite, elle doit inclure cette catégorie dans son filtre.

Je pense que le terme " défaut " doit être compris comme " défaut ". candidat ". Si l'action sur un élément de données se traduit par plusieurs activités, Android présente tous les candidats à l'utilisateur et ce dernier peut sélectionner sa préférence.

Référence :

http://developer.Android.com/guide/components/intents-filters.html

Extrait de cette page :

Android traite toutes les intentions implicites passées àstartActivity() comme si elles contenaient au moins une catégorie : "Android.intent.category.DEFAULT" (la constante CATEGORY_DEFAULT). Par conséquent, les activités qui souhaitent recevoir des intents implicites doivent inclure "Android.intent.category.DEFAULT" dans leurs filtres d'intention. (Les filtres avec les paramètres "Android.intent.action.MAIN" et "Android.intent.category.LAUNCHER" sont l'exception. Ils marquent les activités qui commencent de nouvelles tâches et qui sont représentées sur l'écran du lanceur. Ils peuvent inclure "Android.intent.category.DEFAULT" dans la liste des catégories, mais n'en ont pas besoin).

0 votes

@Comptrol, votre réponse n'est plus ci-dessous. Elle est en haut :-)

0 votes

Oui, mais je l'ai remis dans l'état où il était. Donc je n'ai rien changé du tout, globalement.

1 votes

Je trouve cette réponse plus utile à ma situation actuelle - comprendre les filtres d'intention. merci.

2voto

Shinoo Goyal Points 520

Les activités devront prendre en charge la catégorie CATEGORY_DEFAULT afin qu'elles puissent être trouvées par Context.startActivity().

Pour recevoir des intentions implicites, vous devez inclure la catégorie CATEGORY_DEFAULT dans le filtre d'intentions. Les méthodes startActivity() et startActivityForResult() traitent toutes les intentions comme si elles déclaraient la catégorie CATEGORY_DEFAULT. Si nous ne la déclarons pas dans notre filtre d'intention, aucune intention implicite ne sera résolue vers notre activité.

1voto

CHT Points 46

Il s'agit en fait de s'assurer que vos autres activités peuvent être appelées lorsque l'application fonctionne. LAUNCHER fera de l'activité qui le possède la première activité qui démarre. Pour utiliser les intentions pour accéder aux autres activités, elles doivent être listées comme des activités "réelles" en mettant DEFAULT. C'est ce que je sais, donc ne me citez pas si c'est faux.

1 votes

La référence que j'ai est un projet sur lequel j'ai travaillé pendant que j'étudiais le codage Android. Si vous voulez les fichiers sources, je serai heureux de vous les envoyer.

0voto

RIK Points 113

Catégorie :

android.intent.category.DEFAULT

Correspond à tout Intent implicite. Cette catégorie doit être incluse pour que votre activité puisse recevoir des intentions implicites.

https://codelabs.developers.google.com/codelabs/Android-training-activity-with-implicit-intent/index.html?index=..%2F..%2Fandroid-training#6

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X