Quel est le but de «android.intent.category.DEFAULT»?


104

À quoi sert-il android.intent.category.DEFAULTdans le champ Catégorie des filtres d'intention?


2
Vous dites que c'est le point d'entrée par défaut de votre application. Voir: developer.android.com/reference/android/content/…
Blundell

@Blundell: donc si une intention implicite arrive, une activité avec par défaut comme catégorie dans le filtre d'intention sera appelée?
Pravy

1
Je crois que c'est utilisé pour impliquer que c'est l'activité à utiliser yes "c'est à utiliser dans les filtres d'intention spécifiés dans les packages"
Blundell

si plus d'une activité contient par défaut comme catégorie, dans leurs filtres d'intention respectifs quelle activité sera appelée?
Pravy

S'ils ont des filtres d'intention différents, cela dépendra de l'intention.
Blundell

Réponses:


112

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

La définition de 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é dit simplement au système que " Oh, je pourrais être démarré, même si la catégorie Intention de départ est définie sur Rien du tout! "


27
C'était en fait une explication compréhensible. Comparez cette réponse à la documentation: "Définissez si l'activité doit être une option pour l'action par défaut (appui central) à effectuer sur un élément de données. Si vous définissez cette option, l'utilisateur masquera toutes les activités sans qu'elle soit définie lors de l'exécution d'une action sur certaines data "Comme il peut être difficile d'écrire une description compréhensible ...
Andreas

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

6
La documentation est maintenant plus claire IMO: Android applique automatiquement la catégorie CATEGORY_DEFAULT à toutes les intentions implicites passées à startActivity () et startActivityForResult (). Donc, si vous souhaitez que votre activité reçoive des intentions implicites, elle doit inclure une catégorie pour "android.intent.category.DEFAULT" dans ses filtres d'intention.
shkschneider

2
@humblerookie. Je l'ai essayé et cela ne fonctionne pas sans la catégorie DEFAULT. Si vous ne me croyez pas, testez par vous-même.
Bob Ueland

2
Si seulement tous les tutoriels étaient écrits de cette façon. Pourquoi utilisons-nous encore le langage en bois en 2018?
SudoPlz

24

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 «par défaut» doit être compris comme « candidat par défaut ». Si l'action sur un élément de données se résout en plusieurs activités, Android présentera tous les candidats à l'utilisateur et l'utilisateur pourra sélectionner sa valeur par défaut préférée.

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 acceptent de recevoir des intentions 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 ce n'est pas nécessaire.)


@Comptrol, votre réponse n'est plus ci-dessous. Ça monte. :-)
Ellen Spertus

Oui, mais je l'ai ramené à l'état où il était. Donc je n'ai rien changé du tout, dans l'ensemble.
Özgür

1
Je trouve cette réponse plus utile pour mes filtres d'intention de compréhension de la situation actuelle. Merci.
Neon Warge

1

Il s'agit en fait de vous assurer que vos autres activités peuvent être appelées lorsque l'application est en cours d'exécution. LAUNCHER fera de l'activité qui en a la première activité qui démarre. Pour utiliser les intentions pour accéder aux autres activités, elles doivent être répertoriées comme activités «réelles» en mettant DEFAULT. C'est d'après ce que je sais, alors ne me citez pas si c'est faux.


3
Vous devez vous efforcer de fournir des références pour vos réclamations. "Ne me citez pas si c'est faux" ne vous permet pas de contourner cette règle.
verybadalloc

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 source, je serai ravi de vous les envoyer.
CHT

1

Les activités devront prendre en charge 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'intention. Les méthodes startActivity () et startActivityForResult () traitent toutes les intentions comme si elles déclaraient la catégorie CATEGORY_DEFAULT. Si nous ne le déclarons pas dans notre filtre d'intention, aucune intention implicite ne se résoudra à notre activité.


0

Il est utilisé pour déclarer une opération comme action par défaut (comme son nom l'indique). Considérons que nous avons une application de bloc-notes (faisant référence à l'exemple de bloc-notes Android). La première page de l'application se compose d'une liste de tous les fichiers du bloc-notes. Lorsqu'un fichier de bloc-notes est sélectionné, l'une des opérations telles que modifier une note, supprimer une note, etc. peut être effectuée. Mais je veux faire de l'édition comme mon action par défaut, ce qui signifie que lorsque j'appuie sur le bouton central de mon clavier, la fenêtre d'édition doit être ouverte.


1
Si vous regardez l'exemple du bloc-notes Android, toutes les activités sont marquées par défaut: developer.android.com/reference/android/content/Intent.html
Peter Ajtai

0

https://developer.android.com/guide/components/intents-filters

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


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.