2015-06-11 3 views
4

Я зарегистрировал прослушиватель вещания, чтобы получить android.provider.Telephony.SMS_DELIVER Намеренное действие.Android Получите SMS-намерение: получите идентификатор сообщения или идентификатор темы

Кажется, я могу получить тело и отправить номер телефона этого нового сообщения.

Однако я не могу получить Идентификатор сообщения или Идентификатор потока этого нового сообщения. Единственный способ, которым я нашел, - это поиск сообщений и таблиц бесед для соответствия содержимого. Но это кажется немного грязным, и я чувствую, что должен быть более аккуратный способ.

Сторона примечания:
Есть ли какая-то SMS-документация, которую я пропустил? Потому что много SMS-апи кажется очень недокументированным.

ответ

2

Идентификаторы сообщений или идентификаторы потоков в SMS-сообщении отсутствуют. Каждое SMS - это пакет данных, который полностью не зависит от всех других SMS. В Android существует стандартное приложение SMS, которое хранит SMS в базе данных и «потоковые» разговоры, используя некоторые критерии, которые не содержатся в самом SMS-сообщении. Тем не менее, третьи стороны могут также создавать приложения для SMS, которые управляют сообщениями совершенно по-другому. Это в значительной степени зависит от концепции и реализации конкретного приложения, которое управляет SMS. Это также объясняет, почему в системе SMS мало информации. API, доступный в Android, очень низкоуровневый и очень простой. На этом все еще работают другие приложения.

+0

Можно ли использовать это базовое приложение/службу для Android, чтобы определить, какой поток или идентификатор сообщения находится в его поддерживаемой таблице? Не удалось запросить таблицы для соответствия тела сообщения и участников. –

+0

Нет надежных. Например, вы можете запросить поставщика контента (база данных SMS доступна как поставщик контента) и запросить идентификатор с наивысшим номером в базе данных и предположить, что это самое последнее входящее сообщение. Это, однако, ненадежно: может быть много входящих сообщений, полученных в быстрой последовательности; Также требуется некоторое время, чтобы входящее сообщение сохранялось и доступно, если вы запрашиваете раннее, вы не увидите последнее сообщение. –

+0

Итак, я пробовал идею SQL-запроса, но вы, где это правильно (неудивительно), когда вы получаете намерение, таблицы Android еще не обновлены. Есть ли способ послушать изменения таблиц? Или мне не повезло? –

Смежные вопросы