2011-12-21 14 views
5

Sto provando ad avviare un'attività definita in un altro apk, nel suo AndroidManifest.xml, definisce un'attività e con un'azione, ma nessuna categoria definita.Avvia attività con azione, ma nessuna categoria

Il formato è come

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

Il mio codice sta seguendo

Intent i = new Intent("action name"); 
startActivity(i); 

Tuttavia il mio apk si è schiantato con l'eccezione ActivityNotFound non rilevata, i registri di lettura trovate attività per gestire l'intento ... "

Qualche idea?

Grazie mille.

risposta

16

Guardando il Intent documentation, si dice notare anche la categoria predefinita fornita qui: questo è richiesto per il metodo Context.startActivity per risolvere la vostra attività quando il suo nome componente non è specificato in modo esplicito. Se la definizione IntentFilter dell'attività non include quella categoria, non è possibile avviarla con startActivity. Prova a utilizzare il metodo setClassName e passa la classe del pacchetto e la classe di attività che stai tentando di avviare.

0

È necessario definire l'attività che si sta iniziando nel Manifest. Assicurati di aver fornito lo stesso <intent-action (e il nome dell'attività) che ha l'attività nell'altro apk che vuoi avviare.

android: how do i open another app from my app?

+0

Puoi dare maggiori dettagli sulla definizione intento di manifestare? Come includo l'attività nell'altro apk nel mio manifest? – Jimmy

11

non è possibile avere una categoria vuota quando si utilizza startActivity (...).

aggiungere una categoria di default e questo farà il lavoro:

<intent-filter> 
    <action android:name="action name" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
Problemi correlati