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.
- ACTION_MY_PACKAGE_REPLACED no recibido
- Android BroadcastReceiver: ejecutarlo en el proceso por defecto o en uno nuevo?
- ¿Puede el servicio de una aplicación Android ejecutarse antes de que el usuario lo inicie?
- BroadcastReceiver para Ethernet (RJ45) y USB en Android TV
- La detección de cambios de estado de la red Android tarda tiempo
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?
- ¿Cómo usar el método registerReceiver?
- Android BroadcastReceiver onReceive () llamado dos veces en android 4.0
- Android: obtener notificaciones cuando se acumulan (escucha de notificaciones)
- BroadcastReceiver no funciona
- Anular el registro de Android Broadcast Receiver en onReceive lanza "Receptor no registrado"
- La notificación deleteIntent no funciona
- Android BroadcastReceiver dentro de la actividad
- Android: Cómo detectar la transmisión "Activar el almacenamiento USB"?
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:
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.
- Cómo cambiar un diseño de altura como animación (mediante programación)
- ¿Cómo puedes saber cuál es la principal actividad de lanzamiento?