móviles - manual de programacion android pdf
¿Qué son los filtros de intención en Android? (9)
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, inténtelo de nuevo", use adb logcat
, DDMS o la perspectiva DDMS en Eclipse para examinar el seguimiento de la pila Java asociado con el error.
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
<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 crea una intención implícita, el sistema Android encuentra el componente apropiado para comenzar comparando los contenidos del intento 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 intento explícito.
Guarde el primer filtro de intento 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.
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.
<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>
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.
Primero cambie el xml, marque su 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 usando el método StartActivity.
Si es posible, intente con esta solución instantánea:
Intent intent =new Intent(getApplicationBaseContext,second_Act.class);
StartActivity(intent);
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 intento 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
<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>
Lanzar HelloWorld
Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse("http://androidium.org"));
startActivity(intent);
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 intento explícito. Si el componente con filtro recibe tanto intención implícita como explícita