una studio programacion para otra open llamar iconos desde app aplicacion another abrir android android-manifest

android - studio - ¿Cómo obtengo múltiples iconos para iniciar diferentes actividades en una aplicación?



menu overflow android studio (2)

Tengo una aplicación con dos actividades y me gustaría poder tener dos iconos en el iniciador, cada uno de los cuales inicia la actividad correspondiente dentro de la aplicación.

Específicamente, quiero un icono para iniciar mi aplicación principal y otro ícono para iniciar mi actividad de configuración. es posible?

Esto es lo que he intentado hasta ahora:

<activity android:label="MyApp" android:name=".MyApp"> <intent-filter> <action android:name=".MyApp"/> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:label="Settings" android:name=".Settings"> <intent-filter> <action android:name=".Settings"/> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>

Esto crea dos íconos de iniciador, pero ambos ejecutan mi aplicación principal en lugar del segundo ícono que ejecuta mi aplicación de configuración. Intenté simplemente tener la categoría de iniciador pero luego no obtuve un ícono, así que parece que también necesito la acción principal.

¿Es este el enfoque correcto o debo declarar dos aplicaciones en el manifiesto en su lugar?


Definitivamente vas en la dirección correcta. Esto es lo que tengo (truncado, porque tengo todas mis actividades en la lista mientras dedico el acceso rápido):

<activity android:name=".DeckDrill" android:label="DeckDrill"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DeckList" android:label="DeckList"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

Creo que lo que puede estar sucediendo es interferencia de los elementos de tu acción que especifican el nombre de tu clase. Estoy bastante seguro de que las acciones y categorías deben referirse a las constantes. No sé cómo resultaría eso en lo que estás viendo, pero podrías intentar eliminarlos. Aparte de eso, tienes mucho de lo que tengo.


Lo que debe hacer es lanzar su actividad de configuración en otra tarea. Puede hacerlo especificando la afinidad de su tarea. Esto se hace con el atributo android:taskAffinity . De manera predeterminada, todas las actividades comparten la misma afinidad de tarea que se predetermina al paquete principal especificado en el manifiesto. En la actividad de configuración, puede especificar android:taskAffinity="your.own.package.SettingsTask" para que la actividad de configuración se inicie en su propia tarea.

Documentación extra