ContentObserver используется для SMS
Я пытаюсь извлечь отправленное SMS. Я знаю, что для этого нет BroadcastReciver. Итак, я обнаружил, что могу использовать ContentObserver для прослушивания изменений в БД.
Как я могу это реализовать? Моя цель - получить только новую отправленную смс и отправить ее через POST на БД
Спасибо
2 ответа
Да, можно прослушивать новые SMS, зарегистрировав ContentObserver к контенту://sms/
см. в этом сообщении мой ответ, как мы регистрируем ContentObserver для содержимого://sms/
Практичный способ узнать, отправлено ли SMS
и вы также можете скачать рабочий пример отсюда
Вот фрагмент кода для этого. Ключ должен использовать выбор, который ищет только "type = outgoing messages".
Кроме того, поскольку база данных контента может быть вызвана любым изменением, следите (каким-либо образом) за тем, что уже было обработано.
int THREAD_ID = 0, ADDRESS = 1, DATE = 2, TYPE = 3, BODY = 4, INCOMING = 1, OUTGOING = 2, UNKNOWN = -1;
String[] smsProjection = new String[] {"thread_id", "address", "date", "type", "body"};
ContentResolver cr = context.getContentResolver();
Cursor cursor = context.getContentResolver().query(uri, smsProjection, "type = ? AND date > ?",new String[]{Integer.toString(OUTGOING), Long.toString(lastOutgoingSmsTime)}, null);