Ricevitore Broadcast Android per i messaggi SMS inviati?
-
13-09-2019 - |
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ì.
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
.