¿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?
- Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
- Los teléfonos de Redmi no piden permisos de SMS y por lo tanto no leen sms
- Tarjeta dual sim enviar sms android
- Recuperación de los mensajes SMS desde la tarjeta SIM con android
- Cómo recibir sms de datos en dos puertos diferentes
- ¿Cómo supervisar cada estado de SMS enviado?
- Android - Determinar el límite de texto SMS
- Bloqueo de SMS y Permitir problema en android 4.4 (kitkat) versión
- Uso del nuevo proveedor de contenido de Telephony para leer SMS
- Recuperación de mensajes SMS desde Inbox
- Transmitir datos de la clase BroadcastReceiver a una actividad de Android
- SMS Broadcast Receiver no funciona después de reiniciar
- Enviar y leer el contenido de SMS enviado a través de la aplicación nativa de SMS cordova
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.