2013-10-10 8 views
6

Devo inviare broadcast dalla mia applicazione a un'altra applicazione .. qualsiasi aiuto! il mio pacchetto di applicazioni sono 1) com.demo.database e 2) com.demo.listInvia trasmissione da un apk/pacchetto a un altro apk/pacchetto

Intent themesIntent = new Intent(ThemesManager.THEMES_UPDATED); 
themesIntent.putExtra("package", packageName); 
ctx.sendBroadcast(themesIntent); 

non funziona ..

Modifiche:

<receiver android:name="com.sample.ThemesUpdatedReceiver"> 
     <intent-filter> 
      <action android:name="com.sample.THEMES_UPDATED"/> 
     </intent-filter> 
    </receiver> 
+0

Avete dichiarato 'BroadcastReceiver' in' com.demo.list' nel suo file 'AndroidManifest.xml', o solo nel codice? Perché DEVE essere nel 'AndroidManifest.xml' perché funzioni tra le app. – bclymer

+0

sì, è lì con il filtro intent – AJit

+0

una cosa importante è com.demo.list non ha attività di LAUNCHER .. non è sicuro che possa fare alcuna differenza – AJit

risposta

2

Se hai intenzione di trasmesso, generalmente segue che hai un mittente e un destinatario. Hai postato quello che appare come mittente ..

mittente (dove mai si sta inviando da):

Intent toret = new Intent(); 
toret.setAction("com.myapp.foo"); 
toret.putExtra("bar", "fizzbuzz"); 
sendBroadcast(toret); 

ricevitore (per esempio in onResume())

IntentFilter intentFilter = new IntentFilter("com.myapp.foo"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // ... do something with the intent 
     } 
    // register the receiver 
    this.registerReceiver(receiver , intentFilter); 

mittente invia sempre, il ricevitore deve registrarsi per ascoltare l'intento.

+0

yup, registrato in AndroidManifest.xml – AJit

+0

OK, quindi cosa c'è nell'XML? (e qual è il valore della costante THEMES_UPDATED?) –

+0

aggiunte modifiche e sì THEMES_UPDATED è un valore costante – AJit

2

Ho calcolato che tutte le trasmissioni inviate vengono ricevute da tutte le applicazioni, tranne quando si impostaPackage sull'intenzione di invio per la trasmissione specifica del pacchetto.

Non ricevo trasmissione perché non viene avviata un'altra app (che non ha attività di avvio).

5

@Ajit: Ciao, dal momento che Android API 3.0 [livello API 11], Se un'applicazione non è mai stata avviata neanche una volta, quindi BroadcastReceiver non può ricevere eventi.Come, nel tuo caso, la tua app non ha attività di avvio , quindi potrebbe essere il caso che causa il rifiuto dell'evento.

Oltre a ciò, provare a utilizzare l'approccio di seguito: È stato passato tale valore costante durante la creazione dell'oggetto Intent. Invece passalo nel metodo intent.setAction();

Spero che questo aiuti.

+0

Grazie per ans @anish, l'impostazione e l'azione non forniscono alcuna soluzione ... – AJit

+0

molto utile e –