Domanda

Ho creato un BroadcastReceiver e configurato con un filtro azione android.provider.Telephony.SMS_RECEIVED così è chiamato ogni volta che il telefono riceve un testo.

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

Finora l'unica opzione che vedo è quello di interrogare il fornitore di contenuti per il content://sms/sent che non ha nemmeno darmi tutti i testi inviati perché le applicazioni possono scegliere di non metterla lì.

È stato utile?

Soluzione

Purtroppo non è (al momento) non c'è modo di implementare un BroadcastReceiver poiché l'applicazione sms principio utilizza un SmsManger per inviare i messaggi, ma specifica classi interne concrete intenti inviati e consegnati (rispettivamente SmsReceiver.class e MessageStatusReceiver.class). Non che sia una consolazione, ma è possibile trovare il seguente commento nel dell'applicazione Sms fonte :

// 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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top