Bloquear SMS salientes por contentObserver

Quiero bloquear SMS por contentObserver . Para eso quiero primero obtener el número de teléfono del SMS. ¿Qué debo hacer para obtener el número? Este es el código que tengo, simplemente contando el número de SMS.

 package com.SMSObserver4; import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.provider.Contacts; import android.provider.Contacts.People.Phones; public class SMSObserver4 extends Activity { /** Called when the activity is first created. */ private static final String Address = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setReceiver(); } private SmsSentCounter smsSentObserver = new SmsSentCounter(new Handler()); private int sms_sent_counter = 0; private void setReceiver() { this.getContentResolver().registerContentObserver( Uri.parse("content://sms"), true, smsSentObserver); } class SmsSentCounter extends ContentObserver { public SmsSentCounter(Handler handler) { super(handler); // TODO Auto-generated constructor stub } @Override public void onChange(boolean selfChange) { // TODO Auto-generated method stub try{ System.out.println ("Calling onChange new"); super.onChange(selfChange); Cursor sms_sent_cursor = SMSObserver4.this.managedQuery(Uri .parse("content://sms"), null, "type=?", new String[] { "2" }, null); if (sms_sent_cursor != null) { if (sms_sent_cursor.moveToFirst()) { sms_sent_counter++; System.out.println("test" + sms_sent_counter); } } Uri phoneUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Address); if (phoneUri != null) { Cursor phoneCursor = getContentResolver().query(phoneUri, new String[] {Phones._ID, Contacts.Phones.PERSON_ID}, null, null, null); if (phoneCursor.moveToFirst()) { long person = phoneCursor.getLong(1); // this is the person ID you need } } }catch(Exception e) {} } } } 

He hecho muchas pruebas y he encontrado que esto es imposible. Esto se debe a que cuando la aplicación de mensajería inserta un nuevo registro en el proveedor de contenido de SMS, ya está intentando enviar el SMS. Por lo tanto, incluso si detecta el SMS en el content://sms/outbox URI, será demasiado tarde para detenerlo. De hecho, no hay manera de detenerlo … todo depende de la aplicación de SMS, que no se puede interrumpir.

No, no puedes. Observer llegará a afectar después de que el dataset haya sido modificado, para ese momento sms ya estará en el camino para la entrega. Infact por cualquier medio usted no puede bloquear sms salientes.

  • ¿Cómo iniciar / enviar SMS desde una página web HTML5 usando funciones nativas de dispositivos?
  • Android: apertura de la actividad de SMS con múltiples destinatarios especificados
  • ¿Cómo puedo enviar un SMS desde un BroadcastReceiver y comprobar su estado?
  • SMS no recibidos ... sólo en ciertos casos ... Carrier / Country?
  • Android enviar SMS que es visible en el hilo de SMS (sin GUI)
  • Podría un emulador enviar un SMS a sí mismo
  • Cómo cambiar el texto de los sms de Android
  • ¿Abre la aplicación de Android enviando un mensaje de texto?
  • Android - constantes de tipo sms
  • Leer mensajes de entrada de un número determinado y mostrarlos en una actividad
  • Obtener número de teléfono para varios destinatarios en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.