¿Qué son los filtros de intención en Android?

En mi aplicación de Android, quería comenzar una actividad ‘B’ desde la actividad inicial ‘A’. Creé clases para ambos. Sin embargo, cuando uso el siguiente código para iniciar B, aparece un error de tiempo de ejecución: la application has stopped unexpectedly, try again . Aquí está mi código:

 Intent myIntent = new Intent(this, AddNewActivity.class); startActivity(myIntent); 

Cuando agregué una nueva entrada en AndroidManifest.xml/manifest/application/activity/intent-filers para la actividad B, la aplicación funcionó.

Tengo dos preguntas:

  • Cuando hay múltiples entradas de actividades en AndroidManifest.xml , ¿cómo sabe Android qué actividad comenzar primero?
  • No pude entender los filtros de intención. ¿Alguien puede explicarme?

Aquí está mi AndroidManifest.xml parcial

               

Cuando hay múltiples entradas de actividades en AndroidManifest.xml, ¿cómo sabe Android qué actividad comenzar primero?

No hay “primero”. En su caso, con su manifiesto como se muestra, tendrá dos íconos en su iniciador. Cualquiera que toque el usuario es el que se lanza.

No pude entender los filtros de intención. ¿Alguien puede explicarme?

Hay bastante documentación sobre el tema . Por favor, considere leer eso y luego haga preguntas más específicas.

Además, cuando obtiene “la aplicación se detuvo inesperadamente, intente de nuevo”, use adb logcat , DDMS o la perspectiva DDMS en Eclipse para examinar el seguimiento de la stack Java asociado con el error.

Un filtro de intención es una expresión en el archivo de manifiesto de una aplicación que especifica el tipo de intenciones que el componente desea recibir.

Cuando crea una intención implícita, el sistema Android encuentra el componente apropiado para comenzar comparando los contenidos del bash con los filtros de intención declarados en el archivo de manifiesto de otras aplicaciones en el dispositivo. Si la intención coincide con un filtro de intención, el sistema inicia ese componente y lo entrega el objeto Intento.

AndroidManifest.xml

         

Lanzar HelloWorld

 Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse("http://androidium.org")); startActivity(intent); 

Primero cambie el xml, marque su segunda actividad como DEFAULT

       

Ahora puede iniciar esta actividad usando el método StartActivity.

Cuando crea una intención implícita, el sistema Android encuentra el componente apropiado para comenzar comparando los contenidos del bash con los filtros de intención declarados en el archivo de manifiesto de otras aplicaciones en el dispositivo. Si la intención coincide con un filtro de intención, el sistema inicia ese componente y lo entrega el objeto Intento. Si los filtros de intención múltiple son compatibles, el sistema muestra un diálogo para que el usuario pueda elegir qué aplicación usar.

Un filtro de intención es una expresión en el archivo de manifiesto de una aplicación que especifica el tipo de intenciones que el componente desea recibir. Por ejemplo, al declarar un filtro de intención para una actividad, usted hace posible que otras aplicaciones comiencen su actividad directamente con un cierto tipo de intención. Del mismo modo, si no declaras ningún filtro de intención para una actividad, solo se puede iniciar con un bash explícito.

Según: intenciones y filtros de intención

La Activity que desea que sea la primera pantalla si se abre su aplicación, luego menciónela como LANZADOR en la categoría de intención y las actividades restantes mencionan Predeterminado en categoría de intención.

Por ejemplo : – Hay 2 actividades A y B
La actividad A es LAUNCHER, por lo tanto, conviértalo en LANZADOR en la Categoría de intenciones y B es un elemento secundario para la Actividad A, por lo tanto, configúralo como PREDETERMINADO.

               

Guarde el primer filtro de bash con las teclas MAIN y LAUNCHER y agregue otro como ANY_NAME y DEFAULT .

Su LAUNCHER será la actividad A y DEFAULT será su actividad B.

No puede haber dos Lancher AFAIK. Logcat es una herramienta útil para depurar y verificar el estado de la aplicación / máquina en la parte posterior. será automático al cambiar de una actividad a otra.

filtro de intención es la expresión que se presenta en el manifiesto en su aplicación que especifica el tipo de intenciones que el componente debe recibir. Si el componente no tiene ningún filtro de intención, puede recibir un bash explícito. Si el componente con filtro recibe tanto intención implícita como explícita

Si es posible, intente con esta solución instantánea:

 Intent intent =new Intent(getApplicationBaseContext,second_Act.class); StartActivity(intent);