2009-06-13 18 views
24

Creé un BroadcastReceiver y lo configuré con un filtro de acción android.provider.Telephony.SMS_RECEIVED por lo que se llama cada vez que el teléfono recibe un texto.Receptor de difusión de Android para mensajes SMS enviados?

¿Hay algún evento/acción u otra forma para que mi aplicación sea notificada cada vez que el teléfono envía un texto (preferiblemente independiente de la aplicación que lo envía)?

Hasta ahora, la única opción que veo es sondear al proveedor de contenido para content://sms/sent que ni siquiera me da todos los textos enviados porque las aplicaciones pueden elegir no ponerlo allí.

+0

Como la API para enviar mensajes SMS (android.telephony.gsm.SmsManager) permite a los desarrolladores especificar intenciones personalizadas para ser transmitidas cuando el envío tiene éxito o falla, no creo que sea posible escuchar un solo mensaje de sms enviado "intento" – Henning

+0

Hola Josef, me pregunto ¿has hecho algún otro avance con esto? Actualmente puedo escuchar los mensajes que se envían a través de un observador de contenido, pero me gustaría evitar que los SMS se envíen a través de la red GSM/CDMA y enviarlos a través de una conexión de datos. ¿Tendría alguna idea de cómo bloquear el envío de un SMS a través de GSM/CDMA? –

Respuesta

21

Lamentablemente no es (actualmente) no hay manera de poner en práctica un BroadcastReceiver porque la aplicación SMS estándar utiliza un SmsManger para enviar los mensajes sino que especifica las clases internas concretas para las intenciones enviados y entregados (SmsReceiver.class y MessageStatusReceiver.class respectivamente). No es que le sirve de consuelo, pero se puede encontrar en el siguiente comentario de source la aplicación SMS:

// TODO: Fix: It should not be necessary to 
// specify the class in this intent. Doing that 
// unnecessarily limits customizability.

La mejor alternativa parece ser el sondeo content://sms/sent, potencialmente usando un ContentObserver.

+0

Hola Josef, Me pregunto si has hecho algún otro avance con esto? Actualmente puedo escuchar los mensajes que se envían a través de un observador de contenido, pero me gustaría evitar que los SMS se envíen a través de la red GSM/CDMA y enviarlos a través de una conexión de datos. ¿Tendría alguna idea de cómo bloquear el envío de un SMS a través de GSM/CDMA? –

+1

No, lamentablemente. Pero creo que * bloqueo * el mensaje será aún más complicado. Te lo haré saber si pienso en algo. Mientras tanto, intente hacer una pregunta en stackoverflow.com ;-) –

+0

Por supuesto, un ContentObserver solo funciona bien con aquellas aplicaciones que realmente usan el almacén de contenido de SMS/MMS. Lo que algunas aplicaciones de mensajería (y todas las aplicaciones maliciosas) no hacen. – Phil

Cuestiones relacionadas