¿Podemos borrar un SMS en Android antes de que llegue a la bandeja de entrada?

Estoy borrando un SMS de la bandeja de entrada, pero quiero saber: ¿Cómo puedo eliminarlo antes de que llegue a la bandeja de entrada?

Sí.

A pesar de algunas reacciones negativas a esta pregunta, hay usos legítimos para la interceptación de SMS. Por ejemplo: la automatización de la verificación del número de teléfono, los servicios que se proporcionan a través de SMS (aunque generalmente esto debe hacerse con los datos de SMS), o para aplicaciones que de otro modo mejorar la experiencia del usuario mediante el procesamiento de mensajes con formato especial para mostrarlos en un buen Android IU específica.

A partir de Android 1.6, las emisiones de mensajes SMS entrantes ( android.provider.Telephony.SMS_RECEIVED ) se entregan como una " emisión ordenada ", lo que significa que puede indicar al sistema qué componentes deben recibir la emisión primero.

Si define un atributo android:priority en su mensaje de escucha de SMS <intent-filter> , recibirá la notificación antes de la aplicación nativa de SMS.

En este momento, puede cancelar la transmisión, evitando que se propague a otras aplicaciones.


Actualización (octubre de 2013): cuando llegue Android 4.4, realizará cambios en las API de SMS que pueden afectar la capacidad de una aplicación para influir en la entrega de SMS.
Echa un vistazo a esta entrada de blog de desarrolladores de Android para obtener más información:
http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html

Paso 1: Cree su receptor de difusión personalizado para recibir sms. Escriba la lógica para abortar el broadst para que el mensaje no esté disponible para su bandeja de entrada

 public class SMSReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if(conditionMatches){ abortBroadcast(); } } } 

Paso-2 Registrar el receptor de difusión en AndoridManifest y poner android: valor de prioridad un gran número

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

Eso es

¿Cómo funciona el código anterior?

Como SMS que recibe el reparto amplio es una difusión ordenada el receptor con prioridad alta recibirá primero para que su aplicación reciba primero y después de recibir usted está abortando la difusión. Así que ninguna otra aplicación puede recibirlo. Por lo tanto, los SMS no existirán en la bandeja de entrada

La siguiente solución ("android: priority" y abortBroadcast ()) funciona tanto como la aplicación de mensajería de Android como predeterminada (me refería a la aplicación de mensajería de Android). Si el usuario instala "GoSMSPro" o "HandcentSMS", estas aplicaciones siguen mostrando mensajes en la bandeja de entrada, creo que esto debido a "android: prioridad". No veo una mejor manera de solucionar el problema anterior, si las aplicaciones de mensajería de terceros instalados en el teléfono.

 /** * Check priority * @param activity */ public static void receiverPriority(Activity activity){ Intent smsRecvIntent = new Intent("android.provider.Telephony.SMS_RECEIVED"); List<ResolveInfo> infos = activity.getPackageManager().queryBroadcastReceivers(smsRecvIntent, 0); for (ResolveInfo info : infos) { System.out.println("Receiver: " + info.activityInfo.name + ", priority=" + info.priority); } } 

Compruebe la prioridad y establezca una mayor prioridad (en su manifiesto) que otros receptores.

Si tiene un escenario como este y desea eliminar o ignorar el mensaje relacionado con este número de contacto "+ 44xxxxx", etc, a continuación, utilice este código en el receptor de difusión de SMS

  if(sender.equalsIgnoreCase("+44xxxxxx") this.abortBroadCast(); 

También tiene que configurar la alta prioridad.

  • Administrador de sms de Android no envía sms
  • Android Broadcast Receiver para enviar mensajes SMS?
  • Content: // mms-sms / conversations / return NullPointerException en Android ICS Samsung
  • Suprimir / bloquear BroadcastReceiver en otra aplicación
  • Enviar mensaje SMS mediante una aplicación no predeterminada de SMS en Android 4.4
  • Ir a SMS Pro sobreponiendo android.provider.Telephony.SMS_RECEIVED
  • Volver automáticamente a la anterior aplicación de SMS predeterminada
  • Android: Leer / Enviar mensajes de texto en Ubuntu?
  • Cómo enviar un SMS al emulador de un remitente que es una cadena
  • SMS tipo de Android 0
  • Abortar / Cancelar transmisiones
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.