2012-01-19 17 views
34

ho due attività contrassegnati con filtro intentodue attività di lancio

<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> 

Il problema è che quando sto installando il file apk, non c'è attività mostrato, perché, come ho capito sistema non è possibile specificare quale attività deve essere mostrata.

Ho solo bisogno di due attività mostrate nel programma di avvio, quindi per favore non dare consigli sulla rimozione dei filtri intent dalla seconda attività, o se mi fornisci un altro modo per mostrare due icone nel launcher.

+0

dica per favore maggiori dettagli, perché si bisogno di essa? – Natali

+1

perché ho due moduli ui completamente separati, li tengo in diverse attività e voglio che siano entrambi accessibili dal dashboard di Android. – Orest

+0

Con le ultime versioni di Android, il codice sopra funziona perfettamente - con la prima attività dichiarata nel manifest Android che ottiene la preferenza e mostrata all'utente. – bschandramohan

risposta

65

È necessario specificare che l'attività è quella di default aggiungendo la seguente riga al vostro intento-filtro:

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

Inserire questo nell'attività di default e tenere il resto. Quindi dovrebbe funzionare.

Si consiglia inoltre di aggiungere un'icona diversa al tuo secondo l'attività con l'attributo android:icon="@drawable/myothericon"

+0

AH questo è quello che stavo cercando ma non riuscivo a trovarlo. Questa è la risposta corretta. –

+0

anno, questo è utile per me. – wangzhengyi

2

penso che sia a causa dell'azione "android.intent.action.MAIN", questo ha funzionato per me:

<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

L'ho provato, ma in quel caso la seconda attività non appare nel mio launcher .. non riesco a trovarne la soluzione .. forse è un problema di Android 2.1 – Orest

+0

No ho provato a rimuovere la seconda azione MAIN e ad eseguirla sull'emulatore 2.3.3 e non utilizzare – Orest

+0

hmm, puoi pubblicare l'intero manifest nella tua domanda? – Reno

1

pare è possibile avere più attività di avvio utilizzando la proprietà compito affinità. Leggi la risposta al https://stackoverflow.com/a/3270422/819904

+0

Non pubblicare mai le risposte che sono fondamentalmente "altrove" ... il collegamento potrebbe essere rimosso o modificato .... anche allora, è come se tu mostrassi altri utenti come questo: "Vuoi risolvere questo problema? ... "diventa quindi" La logica circolare funziona perché la logica circolare funziona perché la logica circolare funziona perché 'goTo (charAt (0)' " – Bonatti

+0

Per favore, leggi questo link su:" [Fornisci contesto per i collegamenti] (http: //stackoverflow.com/help/how-to-answer) "che afferma: I collegamenti a risorse esterne sono incoraggiati, ma per favore aggiungi un contesto intorno al link in modo che i tuoi colleghi possano avere un'idea di cosa sia e perché è lì. la parte più rilevante di un link importante, nel caso in cui il sito target sia irraggiungibile o permanentemente offline. – Bonatti

+0

Ti sto solo chiedendo di rispondere a una domanda, dando la risposta, non reindirizzando nessuno da nessun'altra parte (anche "all'interno" del dominio stackoverflow) , allo stesso modo, il proprietario di tale domanda può "del ete "la domanda, la risposta può essere modificata, e anche la domanda stessa può essere chiusa ..... Quello che ti chiedo è di migliorare il modo in cui rispondi alle cose, in un modo che aiuti gli altri. – Bonatti

1

Aggiungere <action> articoli con android:name attributi definiti per entrambi i filtri intenti:

<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> 
Problemi correlati