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) {} } } }
- Envío de sms a varias personas en android
- SMS raw pdu en Android
- Interceptar, leer y cancelar el mensaje SMS
- ¿Cómo leer el mensaje entrante usando el servicio en segundo plano en android?
- Extraer (analizar) la cantidad y descripción de BIZ (Transaction) sms
- La forma más rápida y rápida de obtener nuevos mensajes sms al iniciar la aplicación - Android
- Volver automáticamente a la anterior aplicación de SMS predeterminada
- Envío de SMS a un dispositivo de prueba real (no emulador) vía DDMS o instancia de emulador
- SMS tipo de Android 0
- Cola de SMS Manejo para el error SMS
- Listín de SMS de Android para un número específico
- Cómo averiguar qué SIM recibió SMS en Dual SIM Android Device
- Receptor de radiodifusión sigue funcionando después de cerrar la aplicación - Android
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 debo notificar al usuario que SQLite Asset Helper está cargando la base de datos por primera vez?
- ¿Acción del botón de clic en android?