Android сохранить изображение MediaStore с MIME типа GIF - PullRequest
0 голосов
/ 04 ноября 2019

Хотя этот код успешно создает изображение, которое также присутствует в галерее телефона, расширение имеет значение «.jpg» вместо «.gif».

    File gifFile; // gif file stored in Context.getFilesDir()

    final ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "Image" + System.currentTimeMillis());
    contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/gif");

    // Create a new gif image using MediaStore
    final Uri gifContentUri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    // Open a writable stream pointing to the new file created by MediaStore
    OutputStream outputStream = context.getContentResolver().openOutputStream(gifContentUri, "w");
    // Copy the original file from the app private data folder to the file created by MediaStore
    IOUtils.copyFile(new FileInputStream(gifFile), outputStream);

Выходной файл создается в папке «Изображения» с помощьюMediaStore. Если я вручную изменю расширение выходного файла на gif, анимация gif будет воспроизводиться в галерее Android.

Мне кажется, мне не хватает небольшой детали, чтобы это работало

1 Ответ

1 голос
/ 04 ноября 2019

Удалена строка DISPLAY_NAME.

Добавить contentValues.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/Pictures/Image." + System.currentTimeMillis() + ".gif");

Переходит в подкаталог каталога Pictures, если этот подкаталог существует contentValues.put(MediaStore.MediaColumns.DATA, "/storage/emulated/0/Pictures/Mine/Image." + System.currentTimeMillis() + ".gif");.

Для Android QDATA Colomn бесполезен.

String displayName = "Image." + System.currentTimeMillis() + ".gif";
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, displayName);

сделает это там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...