Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Как сохранить SMS в журнале исходящих сообщений

Добрый день! Кто может подсказать, прошу помочь. Мне необходимо после отправки смс из программы (с помощью SmsManager) сохранить это сообщение в отправленных. Как мне его записать в этот журнал? Вариант: отправлять смс с помощью Intent не подходит. Спасибо!


Ответ

Тема достаточно сложная. Документации нет. Обещают вроде к версии 4.5 наконец опубликовать нормальное API. Ну а пока делается это так: ContentValues values = new ContentValues(); values.put("address", "123456789"); //номер телефона куда отправлен смс values.put("body", "test"); //текст сообщения values.put("date", System.currentTimeMillis()); values.put("read", 1); //сообщение прочитано values.put("seen", 1); //сообщение просмотрено values.put("type", 2); //тип сообщения исходящее values.put("person"), contactId); //идентификатор контакта в БД контактов values.put("thread_id", conversationId); //идентификатор беседы getContentResolver().insert(Uri.parse("content://sms/sent"), values); Где брать идентификатор беседы? В некоторых телефонах он не требуется - система сама подставляет нужный, в некоторых это вызывает крах системы (правда редко), в некоторых сообщение просто теряется и не отображается. В общем случае идентификатор беседы это ключевое поле возвращаемое провайдером бесед content://mms-sms/conversations/ (опять же не для всех телефонов). Идентификатор контакта также можно не вставлять - работает и без него нормально. Правда, если будут 2 контакта с одинаковыми номерами - то могут быть сюрпризы. Поля read/seen/type также необязательны (в большинстве случаев). В общем гуглите, изучайте исходники Android'а - флаг в руки и барабан на шею :)

Комментариев нет:

Отправить комментарий