2012-01-19 13 views
34

He dos actividades marcadas con filtro intencióndos actividades de lanzadores

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.package" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="7" /> 

<application 
    android:name=".MyApp" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <!-- work order activity --> 
    <activity 
     android:name=".app.WorkOrderActivity" 
     android:label="@string/work_order" 
     android:taskAffinity="com.package.task_for_work_order_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- inventory activity --> 
    <activity 
     android:name=".app.InventoryActivity" 
     android:label="@string/inventory" 
     android:taskAffinity="com.package.task_for_inventory_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

El problema es que cuando estoy instalando archivo APK, no hay actividad mostrada, porque, como sistema entendido no puede especificar qué actividad se debe mostrar.

Realmente necesito que se muestren dos actividades en el iniciador, por lo que no recomiendo eliminar filtros de intenciones de la segunda actividad, o si lo hace, proporcione otra forma de mostrar dos íconos en el iniciador.

+0

diría satisfacer más detalles, por qué ¿necesito? – Natali

+1

porque tengo dos módulos de interfaz de usuario totalmente separados, los mantengo en diferentes actividades y quiero que ambos sean accesibles desde el panel de Android. – Orest

+0

Con las últimas versiones de Android, el código anterior funciona bien: la primera actividad declarada en el manifiesto de Android obtiene preferencia y se muestra al usuario. – bschandramohan

Respuesta

65

Es necesario especificar qué actividad es la que viene por defecto al añadir la siguiente línea a su intención de filtro:

<category android:name="android.intent.category.DEFAULT"/> 

Insertar esto en la actividad por defecto y mantener el resto. Entonces debería funcionar.

También es posible que desee agregar un icono diferente a su segunda actividad con el atributo android:icon="@drawable/myothericon"

+0

AH esto es lo que estaba buscando pero no pude encontrarlo. Esta es la respuesta correcta. –

+0

año, esto es útil para mí. – wangzhengyi

2

creo que es debido a la acción "android.intent.action.MAIN", esto funcionó para mí:

<application> 
    <activity android:name=".MyActivityA" android:icon="@drawable/aicon" android:label="@string/app_name"> 
     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".MyActivityB" android:icon="@drawable/bicon" android:label="@string/app_name"> 
     <intent-filter> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
+2

Lo intenté, pero en ese caso la segunda actividad no aparece en mi iniciador ... no puedo encontrar la solución ... puede ser un problema de Android 2.1 – Orest

+0

No intenté eliminar la segunda acción principal y ejecutarla en el emulador 2.3.3 y sin uso – Orest

+0

hmm, ¿puede publicar todo su manifiesto en su pregunta? – Reno

1

parece que es posible tener múltiples actividades de puesta en marcha mediante la propiedad afinidad tarea. Vea la respuesta a https://stackoverflow.com/a/3270422/819904

+0

Nunca publique respuestas que son básicamente "en otro lugar" ... el enlace puede eliminarse o cambiarse ... incluso entonces, es como si estuviera mostrando a otros usuarios de esta manera: "¿Desea resolver este problema? Vaya, vaya allí ... ".... luego se convierte en" La lógica circular funciona porque la lógica circular funciona porque la lógica circular funciona porque 'goTo (charAt (0)' " – Bonatti

+0

Lea este enlace en:" [Proporcione contexto para los enlaces] (http: //stackoverflow.com/help/how-to-answer) "que indica: Se fomentan los enlaces a recursos externos, pero agregue contexto alrededor del enlace para que los demás usuarios tengan una idea de qué es y por qué está allí. Siempre cite la parte más relevante de un enlace importante, en caso de que el sitio objetivo sea inalcanzable o esté permanentemente fuera de línea. – Bonatti

+0

Sólo le pido que responda una pregunta, dando la respuesta, no redirigiendo a nadie a ningún otro lado (incluso al dominio stackoverflow "dentro") , del mismo modo, el propietario de esa pregunta puede "del ete "la pregunta, la respuesta puede ser editada, e incluso la pregunta en sí misma se cerrará ... Lo que le pido es que mejore la forma en que responde las cosas, de una manera que ayude a los demás. – Bonatti

1

Añadir <action> artículos con android:name atributos definidos para ambos filtros intención:

<application 
    android:name=".MyApp" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 

    <!-- work order activity --> 
    <activity 
     android:name=".app.WorkOrderActivity" 
     android:label="@string/work_order" 
     android:taskAffinity="com.package.task_for_work_order_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name=".app.WorkOrderActivity"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- inventory activity --> 
    <activity 
     android:name=".app.InventoryActivity" 
     android:label="@string/inventory" 
     android:taskAffinity="com.package.task_for_inventory_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <action android:name=".app.InventoryActivity"/> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
Cuestiones relacionadas