android - studio - programar mensajes de texto iphone
¿Cómo puedo INTERCEPTAR un SMS entrante con un texto específico? (2)
Quiero saber cómo interceptar un sms entrante para una palabra clave específica EX: "Hola", para poder leer ese sms que contiene "Hola" y eliminarlo después de leer el mensaje, y si ese mensaje no contiene ningún mensaje. dicho texto no se eliminará y, en su lugar, se guardará en la bandeja de entrada. Chicos, por favor, ayúdenme. Me resulta muy difícil realizar esta funcionalidad.
A partir de Android 4.4, lo que pides hacer en la pregunta es imposible.
Desde la versión 4.4 de Android, si su aplicación no es la aplicación de mensajería predeterminada, no podrá realizar las cosas prometidas en la respuesta aceptada. No puede impedir que se notifique a la aplicación de mensajería predeterminada, ni puede eliminar un mensaje SMS.
Busque Broadcast Receiver, esto depende de las aplicaciones instaladas en el teléfono, pero puede darle prioridad a su aplicación para escuchar los mensajes. Aunque, cuando se muestra una notificación, el mensaje aún no estará en la base de datos de SMS, por lo que deberá usar abortBroadcast () para evitar que se notifique a otras aplicaciones. Vea el ejemplo a continuación:
public class MessageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
Log.i(TAG, messages.getMessageBody());
if(messages.getMessageBody().contains("Hi")) {
abortBroadcast();
}
}
Y necesitarías declarar el receptor en el manifiesto, así:
<receiver android:name="com.encima.smsreceiver.MessageReceiver" android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
Finalmente, asegúrese de tener el permiso para RECEIVE_SMS en el manifiesto, ¡espero que eso ayude!