Intereting Posts
Управление мультимедиа на экране блокировки, например, Google Play Музыка в Android? Примеры приложений, используемых служб резервного копирования Android Устройство Phonegap не определено как для Android, так и для iOS Android – пустой список в представлении «Пользовательский список» Выравнивание ImageView с помощью EditText по горизонтали Android2.x: Код ошибки MediaPlayer (1, -19) Поиск и удаление неизменяемых значений в strings.xml Конфликты между различными версиями Google Play Services в приложении (9.2) и сторонней библиотекой (8.4) Уменьшение задержки в приложении для видеопотока с поддержкой Wi-Fi Ошибка crashlytics во время сборки – не удалось прочитать build_id как строку значений Элементы списка ListView для Android не заполняют ширину SingleTask launchMode в android не работает Обнаружение периодических данных с акселерометра телефона Httpclient устарел API Gmail 403 Недостаточно разрешений для домена глобальный

Запрос MMS возвращает только размер отправляемых вложений

В настоящее время я запрашиваю базу данных Android sms/mms для получения всех полученных и отправленных сообщений MMS . Все работает нормально, но я заметил, что столбец m_size имеет значение только для сообщений MMS которые были отправлены (не получены).

Вот запрос:

 final String[] projection = new String[]{ "*" }; Uri uri = Uri.parse("content://mms"); Cursor query = _activity.getContentResolver().query(uri, projection, null, null, null); 

Используя это, я могу получить общие байты сообщения, но в настоящее время он возвращает null для полученных MMS-сообщений.

 if (query.moveToFirst()) { do { // ... Integer size = query.getInt(query.getColumnIndex("m_size")); } while (query.moveToNext()); } 

Без необходимости вычислять размер столбца "data" сообщения, что-то не так с моим запросом / по какой-либо причине, почему m_size возвращает значение null для полученных MMS сообщений (и имеет правильное вложение изображения)?

Примечание . Не уверен, что в предыдущих API-интерфейсах что-то изменилось, поскольку этот API не документирован. В настоящее время я тестирую / разрабатываю Nexus 5X с использованием API 23.

Из того, что я вижу, нет ничего плохого в вашем запросе.

Существует несколько причин, по которым m_size может быть нулевым. Null – это значение по умолчанию для этого столбца при создании таблицы, см. MmsSmsDatabaseHelper . По умолчанию SMS-приложение, вероятно, вызывает PduPersister.persist при сохранении PDU, и размер сообщения вставляется здесь . Тот факт, что вы сохранили извлеченные PDU, но не m_size, указывает, что заголовок не содержит этого значения. Если у вас есть корневое устройство, вы можете проверить содержимое заголовка с помощью tcpdump и Wireshark. Я предполагаю, что приложение SMS по умолчанию сохраняло PDU и части правильно, но одна вещь, которую вы можете проверить, – это тип сообщений MMS в папке «Входящие». При получении MMS вы сначала получите NOTIFICATION-IND, который уведомляет, что есть MMS для загрузки, и содержит некоторую базовую информацию. Это должно сохраняться приложением по умолчанию. Затем он должен загрузить полное MMS и сохранить RETRIEVE-CONF . Размер сообщения является частью NotificationInd . Когда приложение SMS сохраняет RETRIEVE-CONF, оно может перезаписать / удалить NOTIFICATION-IND, а m_size будет потеряно. Чтобы проверить это, вы можете отключить автоматическую загрузку MMS (если приложение поддерживает его) или просто отключить любые данные, поскольку уведомление будет доставлено в виде сообщения WAP Push.