Android Lollipop envía varios BroadcastReceivers para cambios de estado de teléfono

Hasta el androide kitkat teléfono Estado difusión receptor funciona bien. En el receptor de la difusión del estado del teléfono del lolipop del androide que envía la difusión múltiple. ¿Hay algo cambiado en Android Lolipop.

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> 

En Lollipop cada evento de cambio de estado de teléfono parece venir dos veces. En este artículo se describe el problema y se ofrece una solución simple para ello: http://mmarvick.github.io/blog/blog/lollipop-multiple-broadcastreceiver-call-state/

Recomendaría esta solución:

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

Funciona en ambos 4.xa 5.x y debe ser forward-compatible. Para más detalles, consulte mi blog:

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

  • Cómo evitar que SMS ingresen a la bandeja de entrada en Android Kitkat
  • In-Application BroadcastReceiver
  • Acceso a la clase de aplicación en Broadcast Receiver
  • ¿Cómo evito la fuga BroadcastReceiver
  • Ventana emergente sobre la pantalla de llamada entrante nativa de Android, como la aplicación de llamador verdadero para Android
  • El servicio de larga duración consume mucha batería
  • Llamar a un método en la actividad de la clase BroadCastReceiver sin crear la actividad
  • Escucha las llamadas entrantes a través de BroadcastReceiver, sin PhoneStateIntentReceiver o PhoneStateListener
  • Análisis BLE de Android en el servicio de fondo
  • Detectar la contraseña de bloqueo de la pantalla de bloqueo por el usuario en Android
  • Cómo interceptar la intención de ACTION_MEDIA_MOUNTED en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.