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

En mi aplicación para Android, quería iniciar una actividad 'B' desde la actividad inicial 'A'. He creado clases para ambos. Sin embargo, cuando se utiliza código siguiente para iniciar B, obtengo un error de ejecución: la application has stopped unexpectedly, try again . 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 varias entradas de actividades en AndroidManifest.xml , ¿cómo sabe Android qué actividad iniciar primero?
  • No podía entender los filtros de intención. ¿Puede alguien explicar por favor.

Esta es mi AndroidManifest.xml parcial de AndroidManifest.xml

 <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ListAllActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AddNewActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

Cuando hay varias entradas de actividades en AndroidManifest.xml, ¿cómo sabe Android qué actividad iniciar primero?

No hay "primero". En su caso, con su manifiesto como se muestra, tendrá dos iconos en su lanzador. Sea cual sea el usuario que toque es el que se lanza.

No podía entender los filtros de intención. ¿Puede alguien explicar por favor.

Hay un poco de documentación sobre el tema . Por favor, considere la posibilidad de leer eso, luego haga preguntas más específicas.

Además, cuando llegue a "la aplicación se haya detenido inesperadamente, vuelva a intentarlo", utilice adb logcat , DDMS o la perspectiva DDMS en Eclipse para examinar la traza de pila Java asociada al error.

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

Al crear una intención implícita, el sistema Android encuentra el componente apropiado para comenzar comparando el contenido de la intención 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 intenciones, el sistema inicia ese componente y entrega el objeto Intent.

AndroidManifest.xml

 <activity android:name=”.HelloWorld” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.VIEW”/> <category android:name=”android.intent.category.DEFAULT”/> <category android:name=”android.intent.category.BROWSABLE”/> <data android:scheme=”http” android:host=”androidium.org”/> </intent-filter> </activity> 

Iniciar HelloWorld

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

Primero cambia el xml, marca tu segunda actividad como DEFAULT

 <activity android:name=".AddNewActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

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

Al crear una intención implícita, el sistema Android encuentra el componente apropiado para comenzar comparando el contenido de la intención 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 entrega el objeto Intent. Si los filtros de intención múltiple son compatibles, el sistema muestra un cuadro de diálogo para que el usuario pueda elegir qué aplicación utilizar.

Un filtro de intenciones es una expresión del archivo de manifiesto de una aplicación que especifica el tipo de intentos que el componente desea recibir. Por ejemplo, al declarar un filtro de intenciones para una actividad, hace posible que otras aplicaciones inicien directamente su actividad con un cierto tipo de intención. Del mismo modo, si no declara ningún filtro de intención para una actividad, entonces se puede iniciar sólo con una intención explícita.

Según: Intents y filtros de intención

Mantenga el primer filtro de intenciones 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 comprobar el estado de la aplicación / máquina en el detrás. Será automática al cambiar de una actividad a otra.

El filtro de intenciones es la expresión que aparece en el manifiesto en tu aplicación y que especifica el tipo de intentos que el componente debe recibir. Si el componente no tiene ningún filtro de intención, puede recibir una intención explícita. Si el componente con filtro recibe una intención implícita y explícita

La Activity que tiene que almorzar cuando se abra la aplicación lo menciona como LANZADOR en la categoría de intención y las actividades restantes mencionan la categoría Predeterminado en la categoría de intención.

Por ejemplo : – Hay 2 actividad A y B
La actividad A es LAUNCHER, así que hazla como LANZADOR en la categoría intención y B es child para la Actividad A, así que hazla como DEFAULT.

 <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ListAllActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AddNewActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> 

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

 Intent intent =new Intent(getApplicationBaseContext,second_Act.class); StartActivity(intent); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.