2011-11-16 13 views

risposta

13

è necessario dichiarare un intent-filtro nel manifesto (ho preso il seguente esempio da Barcode Scanner):

<activity android:name="..."> 
    <intent-filter> 
     <action android:name="com.google.zxing.client.android.SCAN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

quindi creare intenti con la stessa stringa di azione:

Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
startActivityForResult(intent, code); 

Android dovrebbe iniziare la tua attività (o mostrerà una casella a discesa se ci sono più app che condividono la stessa stringa di azioni).

+0

Grazie, ho appena letto il Barcodescanner Manifest e ho scoperto la stessa cosa. :] – Force

21

In alternativa alla risposta di Dalmas, è possibile esportare uno Activity senza creare uno <intent-filter> (insieme con il fastidio di venire con un'azione personalizzata).

Nel Manifest modificare la tua Activity tag in questo modo:

<activity 
    android:name=".SomeActivity" 
    .... 
    android:exported="true" /> 

La parte importante è android:exported="true", questo tag export determina "se l'attività può essere lanciato da componenti di altre applicazioni". Se il tuo <activity> contiene un <intent-filter>, questo tag è impostato automaticamente su true, in caso contrario, è impostato su false per impostazione predefinita.

Poi per avviare l'Activity fare questo:

Intent i = new Intent(); 
i.setComponent(new ComponentName("package name", "fully-qualified name of activity")); 
startActivity(i); 

Naturalmente con questo metodo è necessario conoscere il nome esatto della attività che si sta tentando di lanciare.

+0

grazie mille! improvvisamente la mia app ha iniziato a lanciare questo errore anche dopo aver apportato un cambiamento irrilevante, anche dopo aver rimosso quella modifica, ma questo ha risolto il problema! – Michael

+0

ottime specifiche sul comportamento predefinito. Un'app esterna diceva che l'attività principale della mia app era stata esportata e non riuscivo a capire perché fino a quando non avessi letto la tua risposta ... buona giornata! – Antonino

Problemi correlati