Android abortBroadcast no impide que los sms sean transmitidos

En mi método onReceive tengo este código:

if (from.equals(number)) { abortBroadcast(); in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(in); Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "Not from needed number", Toast.LENGTH_SHORT).show(); } 

Donde number = "29853" – número de mensajes de los que quiero capturar y no guardar en Inbox.

Este código funciona correctamente – si sms es de número el primer Toast funciona e imprime el contenido del mensaje, si sms no es del número "Not from needed number" se imprime. El problema es que abortBroadcast no hace su businness – el mensaje del número todavía está en la bandeja de entrada del teléfono aunque la prioridad del receptor es 1000:

 <receiver android:name=".service_classes.MyReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" android:priority="1000" /> </intent-filter> </receiver> 

¿Cuál es el problema – por qué abortBroadcast no funciona?

El abortBroadcast() no elimina mensajes de la bandeja de entrada, sólo está suprimiendo la notificación de la barra de estado. Para eliminar los sms de la bandeja de entrada, consulte este enlace

Mover el android:priority a la intención de filtro donde pertenece.

  <intent-filter android:priority="9999999"> 

Entonces es más probable que tenga prioridad y su cancelación funcionará. Lo he probado y funciona.

Desde Android 4.4 no se pueden cancelar estas emisiones. Aquí hay un enlace a las fuentes de AOSP que muestran esto:

https://github.com/CyanogenMod/android_frameworks_opt_telephony/blob/d43b5b1ca91e0aac0c697546a5cb341ffa758e0b/src/java/com/android/internal/telephony/ImsSMSDispatcher.java#L605

He utilizado esto hace un tiempo y estaba funcionando, podría rechazar algunos mensajes para mostrar, pero esto no funciona ahora. Creo que Android ya no permite que el usuario tome todo el control sobre el evento SMS_RECEIVED.

  • ¿Cuándo cancelar el registro de Broadcast Receiver registrado en onCreate?
  • NEW_OUTGOING_CALL no se llama en el Samsung Galaxy S
  • API de geocodificación de Android BroadcastReceiver no activado
  • Android.intent.action.SCREEN_ON no funciona como filtro de intenciones de recepción
  • Android - cómo anular el registro de un receptor creado en el manifiesto?
  • Iniciar Broadcast Receiver de una actividad en android
  • LocalBroadcastManager vs Context.registerReceiver (), Context.sendBroadcast (Intent) y Context.unregisterReceiver () son iguales?
  • Receptor de radiodifusión en un fragmento
  • Problema con BroadcastReceiver (error del receptor no registrado)
  • Transmisión de Android del servicio a la actividad
  • La aplicación de Android A quiere realizar el seguimiento de los datos de referencia de Google Play para la instalación de la aplicación Android B
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.