¿Cuál es el propósito de "android.intent.category.DEFAULT"?

104

¿Cuál es el propósito de usar android.intent.category.DEFAULTen el campo Categoría de los filtros de intención?

Pravy
fuente
2
Lo que dices es el punto de entrada predeterminado para tu aplicación. Ver: developer.android.com/reference/android/content/…
Blundell
@Blundell: entonces, si llega una intención implícita, ¿se llamará a una actividad con una categoría predeterminada en el filtro de intenciones?
Pravy
1
Creo que se usa para implicar que esta es la actividad para usar sí "es para usar en filtros de intención especificados en paquetes"
Blundell
si más de una actividad contiene default como su categoría, en sus respectivos filtros de intención, ¿a qué actividad se llamará?
Pravy
Si tienen diferentes filtros de intención, dependerá de la intención.
Blundell

Respuestas:

112

Las categorías se utilizan para Intents implícitos. Por lo tanto, si su actividad puede iniciarse mediante un intento implícito cuando no se asigna ninguna otra categoría específica a la actividad, el filtro de intención de la actividad debe incluir esta categoría. (incluso si tiene otras categorías en el filtro Intención). Si está seguro de que su actividad debe llamarse con cualquier otra categoría, no use el valor predeterminado.

Establecer la categoría como predeterminada no significa que esta actividad se utilizará de forma predeterminada cuando se inicie la aplicación. La actividad simplemente le dice al sistema que " ¡Oh, podría comenzar, incluso si la categoría de intención inicial está configurada en Nada en absoluto! "

Özgür
fuente
27
En realidad, esta fue una explicación comprensible. Compare esta respuesta con los documentos: "Establezca si la actividad debe ser una opción para que la acción predeterminada (presione el centro) se realice en un dato. Al configurar esto, se ocultará al usuario cualquier actividad que no esté configurada al realizar una acción en algunos datos "¿Qué tan difícil puede ser escribir una descripción comprensible ...?
Andreas
Sin embargo, no estoy seguro de su mandato, ya que parece ser opcional, ya que una actividad sin ningún filtro de intención aún podría llamarse como una actividad implícita
humblerookie
6
La documentación ahora es más clara IMO: Android aplica automáticamente la categoría CATEGORY_DEFAULT a todos los intentos implícitos pasados ​​a startActivity () y startActivityForResult (). Entonces, si desea que su actividad reciba intenciones implícitas, debe incluir una categoría para "android.intent.category.DEFAULT" en sus filtros de intenciones.
shkschneider
2
@humblerookie. Lo he probado y no funciona sin la categoría DEFAULT. Si no me cree, pruébelo usted mismo.
Bob Ueland
2
Si solo todos los tutoriales estuvieran escritos de esta manera. ¿Por qué seguimos usando lenguaje de madera en 2018?
SudoPlz
24

Esta categoría se utiliza principalmente para intenciones implícitas. Si su actividad desea iniciarse con una intención implícita, debe incluir esta categoría en su filtro.

Creo que el término "predeterminado" debe entenderse como " candidato predeterminado ". Si la acción en un fragmento de datos se resuelve en múltiples actividades, entonces Android presentará todos los candidatos al usuario y el usuario puede seleccionar su predeterminado preferido.

Referencia:

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

Extracto de esa página:

Android trata todos los intentos implícitos pasados ​​a startActivity () como si contuvieran al menos una categoría: "android.intent.category.DEFAULT" (la constante CATEGORY_DEFAULT). Por lo tanto, las actividades que estén dispuestas a recibir intents implícitos deben incluir "android.intent.category.DEFAULT" en sus filtros de intents. (Los filtros con la configuración "android.intent.action.MAIN" y "android.intent.category.LAUNCHER" son la excepción. Marcan actividades que inician nuevas tareas y que están representadas en la pantalla de inicio. Pueden incluir "android.intent .category.DEFAULT "en la lista de categorías, pero no es necesario).

Bruno Ranschaert
fuente
@Comptrol, su respuesta ya no está debajo. Está subiendo. :-)
Ellen Spertus
Sí, pero lo devolví al estado en el que estaba. Así que no cambié nada en absoluto, en general.
Özgür
1
Encuentro esta respuesta más útil para mis filtros de intención de comprensión de la situación actual. gracias.
Neon Warge
1

En realidad, es para asegurarse de que sus otras actividades se puedan llamar cuando la aplicación se esté ejecutando. LAUNCHER hará que la actividad que la tenga sea la primera actividad que se inicie. Para utilizar las intenciones para llegar a las otras actividades, deben aparecer como actividades "reales" poniendo DEFAULT. Eso es por lo que sé, así que no me cites si está mal.

CHT
fuente
3
Debe esforzarse por proporcionar referencias para sus reclamos. "No me cites si está mal" no te permite anular esta regla.
verybadalloc
La referencia que tengo es un proyecto en el que trabajé mientras estudiaba sobre codificación de Android. Si desea los archivos de origen, con gusto se los enviaré.
CHT
1

Las actividades deberán admitir CATEGORY_DEFAULT para que Context.startActivity () pueda encontrarlas.

Para recibir intents implícitos, debes incluir la categoría CATEGORY_DEFAULT en el filtro de intents. Los métodos startActivity () y startActivityForResult () tratan todos los intents como si declararan la categoría CATEGORY_DEFAULT. Si no lo declaramos en nuestro filtro de intenciones, ninguna intención implícita se resolverá en nuestra actividad.

Shinoo Goyal
fuente
0

Se utiliza para declarar alguna operación como acción predeterminada (como sugiere su nombre). Consideremos que tenemos una aplicación de bloc de notas (en referencia a la muestra de bloc de notas de Android). La primera página de la aplicación consta de una lista de todos los archivos del bloc de notas. Cuando se selecciona un archivo de bloc de notas, se puede realizar una de las operaciones como editar nota, eliminar nota, etc. Pero quiero hacer que editar sea mi acción predeterminada, lo que significa que cuando presiono el botón central de mi teclado, la ventana de edición debe estar abierta.

Prerna
fuente
1
Si observa el ejemplo del Bloc de notas de Android, todas las actividades están marcadas como predeterminadas: developer.android.com/reference/android/content/Intent.html
Peter Ajtai
0

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

Para recibir intents implícitos, debe incluir la categoría CATEGORY_DEFAULT en el filtro de intents. Los métodos startActivity () y startActivityForResult () tratan todos los intents como si declararan la categoría CATEGORY_DEFAULT. Si no declara esta categoría en su filtro de intenciones, ninguna intención implícita se resolverá en su actividad.

kreker
fuente