2015-02-02 4 views
5

Bis zu Android kitkat Telefonstatus Broadcast-Empfänger funktioniert gut. In android Lolipop Telefon State Broadcast-Empfänger senden mehrere Broadcast. Hat sich in Android Lolipop etwas verändert?Android Lollipop sendet mehrere BroadcastReceivers für Telefon-Statusänderungen

public class PhoneStateBroadcastReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
    Log.d("PhoneState", state); 
    } 
} 
} 

    <receiver android:name="com.phonestate.PhoneStateBroadcastReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 
+0

Ich bemerkte, gibt es eine extra mit der Absicht genannt Abonnement gesendet und scheint entweder 1 oder 9223372036854775807. Meine Vermutung ist, um ein Problem zu sein? – gerfmarquez

+0

ist die Nummer Long.MAX_VALUE. Haben Sie herausgefunden, warum das passiert? – Muzikant

+0

gepostet ich einen Fehlerbericht für dieses Problem: https://code.google.com/p/android/issues/detail?id=161508 – Muzikant

Antwort

0

Ich würde diese Lösung empfehlen:

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! 
    } 
} 

es auf beiden Werken eine 5.x 4.x und sollte zukunfts kompatibel sein. Weitere Einzelheiten finden Sie in meinem Blog:

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

Verwandte Themen