Итак, что вы можете сделать, чтобы получить изображения, это получить идентификатор MMS и пройти («content://mms/part»), выполнить проверку типа:
String type = cursor.getString(cursor.getColumnIndex("ct"));
String partId = cursor.getString(cursor.getColumnIndex("_id"));
//is type a picture
if ("image/jpeg".equals(type) || "image/bmp".equals(type)
|| "image/gif".equals(type) || "image/jpg".equals(type)
|| "image/png".equals(type)) {
getMmsImage(partId); // load in your picture
}
Теперь, когда у вас есть идентификатор части, вы знаете местоположение изображения, поэтому вы можете загрузить его, используя все, что хотите, например, если вы просто хотите, чтобы это было растровое изображение, которое вы можете сделать:
public Bitmap getMmsImage(String _id, Context context) {
Uri partURI = Uri.parse("content://mms/part/" + _id);
InputStream is = null;
Bitmap bitmap = null;
try {
is = context.getContentResolver().openInputStream(partURI);
bitmap = BitmapFactory.decodeStream(is);
} catch (Exception e) {// probably should do an ioException around here}
finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {}
}
}
return bitmap;
}
Теперь я хотел бы отметить, что если бы вы хотели анимированные GIF-файлы, это не сработало бы, оно загружало бы GIF-изображения, но они были бы неподвижными изображениями. если вы хотите, чтобы они были анимированными, вы можете использовать что-то вроде Glide и указать путь для uri. Glide требует времени для загрузки GIF-файлов, просто честное предупреждение.
Что касается получения MMS, вы всегда можете использовать наблюдателя и загружать добавленное сообщение всякий раз, когда наблюдатель говорит, что произошли изменения... Или используйте широковещательный приемник, если вы хотите, чтобы он был мессенджером по умолчанию.
person
John Saunders
schedule
03.05.2017