Solución:
ACTION_MAIN
se considera un punto de entrada para la aplicación. Por lo general, se combina con CATEGORY_LAUNCHER
en un <intent-filter>
para indicar una actividad que debería aparecer en el lanzador de la pantalla de inicio, o en cualquier otra cosa que se considere un lanzador. Estos “lanzadores” pueden consultar PackageManager
, utilizando queryIntentActivities()
, para encontrar dichas actividades y mostrárselas al usuario.
Sin embargo, ACTION_MAIN
se puede utilizar en combinación con otras categorías para otros fines especializados. Por ejemplo, CATEGORY_CAR_DOCK
con ACTION_MAIN
indica una actividad que debe considerarse candidata a mostrarse cuando el usuario deja caer su teléfono en una base para automóvil proporcionada por el fabricante.
Cuando un Intent
se usa con startActivity()
, Si el Intent
no está ya colocado en una categoría, se coloca en CATEGORY_DEFAULT
. Por lo tanto, un <activity>
<intent-filter>
necesita especificar algunos <category>
, utilizando <category android:name="android.intent.category.DEFAULT" />
si nada mas.
android.intent.action.MAIN
significa que esta actividad es el punto de entrada de la aplicación, es decir, cuando inicia la aplicación, se crea esta actividad.
De los documentos
ACTION_MAIN with category CATEGORY_HOME -- Launch the home screen.
Además, desde aquí
Actividad Acción Iniciar como punto de entrada principal, no espera recibir datos.
android.intent.category.DEFAULT 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. Si su actividad puede iniciarse con una intención implícita cuando no se le asigna una categoría específica, su filtro de intención debe incluir esta categoría.
android.intent.category.LAUNCHER
categoría: proporciona información adicional sobre la acción a ejecutar.
CATEGORY_LAUNCHER
significa que debería aparecer en el Lanzador como una aplicación de nivel superior
Ver los documentos.
- http://developer.android.com/reference/android/content/Intent.html
- http://developer.android.com/guide/topics/manifest/action-element.html
<action android:name="android.intent.action.MAIN"/>
Es la actividad principal de esta aplicación.
<category android:name="android.intent.category.LAUNCHER" />
Está en la categoría LANZADOR, lo que significa que tiene un ícono en cualquier elemento que se considere un “lanzador”, como la pantalla de inicio.
<category android:name="android.intent.category.DEFAULT" />
La llamada a startActivity () siempre agregará la categoría DEFAULT si no se especifica ninguna otra categoría.
Generalmente solo agrega android.intent.category.DEFAULT
incluso si tiene otras categorías. Esto garantizará que si Requesting Intent no proporciona ninguna categoría al iniciar el intent utilizando startActivity(intent)
, entonces tu Actividad de recepción también puede recibir esos Intents.
Fuente: The Busy Coders Guide to Android Development
https://commonsware.com/Android/