Как запросить журнал MMS в Android

В моем приложении мне нужно запросить журнал SMS и MMS, чтобы получить историю всех входящих и исходящих сообщений. Этот код прекрасно работает для SMS:

Cursor c = cr.query(Uri.parse("content://sms"), null, null, null, null);

Но когда я пытаюсь сделать следующее, я получаю совершенно другие результаты:

Cursor c = cr.query(Uri.parse("content://mms"), null, null, null, null);

SMS-запрос возвращает данные, которые включают адрес сообщения (номер телефона), имя контакта, тему сообщения, тело сообщения и т. д. Тот же запрос для MMS возвращает кучу пустых или числовых полей значений, которые я не могу понять. из. Мне действительно нужен список всех MMS-сообщений, находящихся в данный момент на телефоне, с номером телефона или идентификатором контакта, связанным с ним, и если сообщение было входящим или исходящим сообщением. В результатах запроса SMS я могу получить номер телефона из поля address и тип входящего/исходящего из поля type, но ни один из них не существует, когда я запрашиваю MMS.

Есть ли другой контент Uri, который мне нужно запрашивать для такого рода данных MMS? Любая помощь будет принята с благодарностью.

Изменить: просто чтобы уточнить, я полностью осознаю, что это неподдерживаемый поставщик контента. Однако, поскольку нет поддерживаемого способа сделать это, я полностью готов протестировать и поддержать это для каждого телефона/версии ОС. Просто чтобы продолжить обсуждение, скажем, что этот вопрос относится к Android 1.6 на HTC Dream (G1) или HTC Magic (MyTouch). Как бы вы выполнили эту задачу на конкретном телефоне и версии ОС? Или, если это невозможно на них, но возможно на Android 2.0 на Motorola Droid, то я бы также нашел эту информацию очень полезной. Но, тем не менее, давайте придерживаться обсуждения того, как выполнить эту задачу поддерживаемым или неподдерживаемым способом, и не позволять этому превращаться в обсуждение того, как мы все должны держаться подальше от вещей, которые не поддерживаются API, что я и делаю. найти дискуссионные группы Android, которые, как мне кажется, практически не помогают. Если я использую неподдерживаемый метод, ничего страшного, покажите мне поддерживаемый метод выполнения этой задачи. Если нет поддерживаемого метода, то почему API позволяет мне запрашивать разрешение на чтение SMS через android.permission.READ_SMS?


person Mark B    schedule 01.01.2010    source источник
comment
Имейте в виду, что ни один из них не поддерживается, и ваше приложение может не работать на различных устройствах или в будущих версиях Android. Поставщик SMS-контента не является частью Android SDK, поэтому производители устройств могут удалить его, пересмотреть или иным образом испортить, и основная команда Android может сделать то же самое.   -  person CommonsWare    schedule 01.01.2010
comment
Я полностью это понимаю. Если у вас есть официально поддерживаемый способ запроса журнала SMS, я был бы рад переключиться на него. А пока я просто пытаюсь работать с тем, что мне доступно.   -  person Mark B    schedule 01.01.2010
comment
См. также: stackoverflow.com/ вопросы/2591530/   -  person Marc Gravell    schedule 10.12.2010


Ответы (1)


Это URI контента, которые я использовал в прошлом. Вам придется возиться с возвращаемыми значениями, и это далеко от получения частей MMS, но, надеюсь, это поможет.

// root URI for MMS messages
static final String MMS_CONTENT_URI = "content://mms";

// root URI for MMS and SMS threads
public static final String MMS_SMS_CONTENT_URI = "content://mms-sms";

// URI of MMS inbox
public static final String RECEIVED_MMS_CONTENT_URI = MMS_CONTENT_URI + "/inbox";

// URI where sent MMSes are stored
public static final String SENT_MMS_CONTENT_URI = MMS_CONTENT_URI + "/sent";

// URI where sent MMSes are stored
public static final String MMS_PART_URI = MMS_CONTENT_URI + "/part";

// URI for incoming SMSes (also triggers on MMSes)
public static final String SMS_INBOX_URI = "content://sms/inbox";
person Ginger McMurray    schedule 07.02.2011
comment
Подождите, а в чем, по-вашему, разница между SENT_MMS_CONTENT_URI и MMS_PART_URI? - person MLQ; 16.08.2012