2012-02-13 8 views
5

Nella mia app ho l'attività principale definita nel file manifest.xml in questo modo:Nessuna attività Launcher trovato, pur essendo dichiarato in manifest.xml

<activity 
      android:name=".MainActivity" 
      android:label="@string/guide_activity" > 
      <intent-filter> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <action android:name="android.intent.action.MAIN" /> 

       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 
      <meta-data android:name="android.app.searchable" 
        android:resource="@xml/searchable"/> 
     </activity> 

quando ho eseguito il progetto da Eclipse collegato ad un vero e proprio dispositivo o un emulatore ricevo il seguente messaggio nella console: l'attività No Launcher trovato

quello che può essere il motivo di tutto questo?

risposta

15

Dividere il filtro intent in due separati. Se li mescoli in questo modo, Android non determinerà che uno dei due è il filtro di avvio.

<activity 
    android:name=".MainActivity" 
    android:label="@string/guide_activity" > 

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

     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 

     <meta-data android:name="android.app.searchable" 
       android:resource="@xml/searchable"/> 
</activity> 
+0

Grazie per la risposta, ha funzionato, ma qual è la ragione di questo, si suppone di lavorare senza la necessità di dividere –

+2

Quando Android manda un intento verso la vostra applicazione, controlla i filtri intento di testare se uno corrisponde a tutte le regole. Solo quando questo è vero, l'intento verrà effettivamente consegnato. In questo caso controlla se l'intento di avvio corrisponderà a entrambe le azioni "SEARCH" e "MAIN". Questo non è il caso, quindi l'intento non verrà consegnato correttamente. Se lo dividi, il sistema vede che esiste un intentfilter in cui tutte le regole corrispondono e fornisce correttamente l'intento principale. –

+0

Grazie, anche io credo di non aver mai letto questo nella documentazione, strano :) –

Problemi correlati