2010-09-20 14 views
5

Ho un'applicazione che è allo stesso tempo un mittente broadcast e un ricevitore di azione standard android.intent.action.SET_WALLPAPER. Voglio fare alcune cose solo nel caso in cui un'altra applicazione ha trasmesso questo intento.Come determinare il mittente di Broadcast Intent

C'è un modo per determinare chi ha avviato una trasmissione nel metodo onReceive di un BroadcastReceiver?

risposta

4

No.

Se si desidera solo fare qualcosa quando un'azione è stato trasmesso da un'altra applicazione (cioè non il vostro), immagino che dovrebbe essere facile determinare che la vostra applicazione non ha inviare questa trasmissione , e quindi era qualcun altro ..

+0

ovviamente, ma in questo modo devo usare il tipo di timestamp/flag da qualche parte nella mia app - Non invio esplicitamente una trasmissione, è fatta da Android quando chiamo setWallpaper. – Goran

+0

Questo è corretto. –

5

Se tutto ciò che ti interessa è se è stato inviato dalla tua app o meno, ciò che puoi fare è aggiungere un extra all'Intento ogni volta che ne crei uno. Per esempio:

broadcastIntent.putExtra('com.android.app.EXTRA_APP_CREATED', true) 

Poi, quando si riceve la trasmissione, è possibile controllare

if (intent.getExtra('com.android.app.EXTRA_APP_CREATED', false) { ... } 

per vedere se si è creato l'intento.

Problemi correlati