2015-02-02 21 views
5

Fino a kitkat del ricevitore di stato del ricevitore Android funziona perfettamente. In Android lolipop dello stato del telefono trasmette il ricevitore inviando più trasmissioni. C'è qualcosa di cambiato in Android Lolipop.Android Lollipop invia Multiple BroadcastReceivers per le modifiche dello stato del telefono

+0

ho notato che è un extra inviato con la sottoscrizione intento chiamato, e sembra essere 1 o 9223372036854775807. La mia ipotesi è, un bug? – gerfmarquez

+0

il numero è Long.MAX_VALUE. Hai trovato perché questo sta accadendo? – Muzikant

+0

Ho postato un bug report per questo problema: https://code.google.com/p/android/issues/detail?id=161508 – Muzikant

risposta

0

mi sento di raccomandare questa soluzione:

public void onReceive(Context context, Intent intent) { 
    long subId = intent.getLongExtra("subscription", Long.MIN_VALUE); 
    if(subId < Integer.MAX_VALUE) { 
    // hurray, this is called only once on all operating system versions! 
    } 
} 

funziona sia su 4.xe 5.xe una dovrebbe essere compatibile in avanti. Per maggiori dettagli si rimanda al mio blog:

http://www.skoumal.net/en/android-duplicated-phone-state-broadcast-on-lollipop/