Ответ 1
Проблема в том, что вы предполагаете, что ваш курсор имеет только 1 запись. На самом деле это не так.
Для MMS-сообщений вы обнаружите, что есть 3 (или более) записи, соответствующие одному и тому же mid
. Они описаны ниже:
-
Одна запись будет соответствовать файлу SMIL. SMIL - это формат файла, содержащий xml, который помогает наблюдателю MMS знать, как отображать MMS (это то, что вы напечатали выше). Тип MIME для этой записи
application/smil
, если вы посмотрите на столбец с именемct
(сокращение для типа содержимого) -
Другая запись будет соответствовать текстовому файлу, содержащему любой текст в этом MMS, помимо приложения. Тип MIME будет
text/plain
-
Наконец, вы найдете еще одну запись, на самом деле имеющую вложение. Это вложение может иметь различные типы MIME в зависимости от того, какой файл. Если это будет jpeg, это будет
image/jpeg
, если png будетimage/png
и т.д. (Вы получите точку)
Итак, проблема заключалась в том, что вы предполагали, что курсор имеет 1 строку. Если вы перебираете три строки, вы найдете то, что ищете.
Как правило, я бы отфильтровывал столбец _data
для непустого значения, чтобы сразу перейти к строке вложения. (Столбец _data
будет содержать путь uri для того, где вложение сохраняется на телефоне. Эта строка будет null
для всех других строк, которые не соответствуют вложению MMS. Поэтому вы должны искать строку, которая соответствует ваш mid
и где _data column value is not null
). Когда вы найдете эту строку, вы можете просто прочитать столбец ct
этой строки, чтобы найти тип MIME строки. Это скажет вам, какой тип файла передается в MMS-сообщении, будь то image/xyz
или audio/abc
или video/qwe
и т.д.