2009-06-13 20 views
24

Ho creato un BroadcastReceiver e l'ho configurato con un filtro di azione android.provider.Telephony.SMS_RECEIVED così viene chiamato ogni volta che il telefono riceve un testo.Ricevitore broadcast Android per messaggi SMS inviati?

C'è qualche evento/azione o altro modo per la mia richiesta di essere notificato ogni volta che il telefono invia un testo (preferibilmente indipendente dall'applicazione che lo invia)?

Finora l'unica opzione che vedo è il polling del provider di contenuti per content://sms/sent che non mi fornisce nemmeno tutti i messaggi inviati perché le applicazioni possono scegliere di non inserirli.

+0

Come l'API per l'invio di messaggi SMS (android.telephony.gsm.SmsManager) consente agli sviluppatori di specificare intenti personalizzati da trasmettere quando l'invio ha esito positivo o negativo, non penso sia possibile ascoltare un singolo "messaggio sms inviato" "intento. – Henning

+0

Ciao Josef, mi chiedo se hai fatto ulteriori progressi con questo? Attualmente posso ascoltare i messaggi inviati tramite un osservatore di contenuti, ma vorrei interrompere l'invio degli sms sulla rete GSM/CDMA e inviarli tramite una connessione dati. Avresti qualche idea su come bloccare un sms dall'invio su GSM/CDMA? –

risposta

21

Purtroppo non è (al momento) non c'è modo di implementare un BroadcastReceiver perché l'applicazione sms principio utilizza un SmsManger per inviare i messaggi, ma specifica classi interne concreti per gli effetti inviati e consegnati (rispettivamente SmsReceiver.class e MessageStatusReceiver.class). Non che sia una consolazione, ma è possibile trovare il seguente commento in del source applicazione SMS:

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

La migliore alternativa sembra essere polling content://sms/sent, potenzialmente utilizzando un ContentObserver.

+0

Ciao Josef, Mi chiedo se hai fatto ulteriori progressi con questo? Attualmente posso ascoltare i messaggi inviati tramite un osservatore di contenuti, ma vorrei interrompere l'invio degli sms sulla rete GSM/CDMA e inviarli tramite una connessione dati. Avresti qualche idea su come bloccare un sms dall'invio su GSM/CDMA? –

+1

No, sfortunatamente. Ma penso che * bloccando * il messaggio sarà ancora più complicato. Ti farò sapere se penso a qualcosa. Nel frattempo, prova a fare una domanda su stackoverflow.com ;-) –

+0

Ovviamente un ContentObserver funziona egregiamente con quelle applicazioni che effettivamente usano il Content Store SMS/MMS. Quali app di messaggistica (e tutte le app dannose) non funzionano. – Phil

Problemi correlati