Я пытаюсь поделиться анимированным GIF-файлом с помощью библиотеки Glide с помощью: Кэш-папка FileProvider. После этой проблемы: https://github.com/bumptech/glide/issues/459 и этот вопрос: Поделиться файлом изображения из каталога кэша с помощью Intent ~ android
Я получаю Формат файла не поддерживается
Вот код:
private void saveImageAndShare(GifDrawable gifDrawable) {
if (gifDrawable != null) {
String fileName = "sharingGif.gif";
File sharingGifFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), fileName);
gifDrawableToFile(gifDrawable, sharingGifFile);
Uri uri = ImageTypeFileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", sharingGifFile);
context.grantUriPermission(context.getPackageName(), uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareFile(uri);
}
}
private void shareFile(Uri uri) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/gif");
shareIntent.setPackage("com.whatsapp");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
context.startActivity(Intent.createChooser(shareIntent, "Share Emoji"));
}
private void gifDrawableToFile(GifDrawable gifDrawable, File gifFile) {
ByteBuffer byteBuffer = gifDrawable.getBuffer();
try {
FileOutputStream output = new FileOutputStream(gifFile);
byte[] bytes = new byte[byteBuffer.capacity()];
((ByteBuffer) byteBuffer.duplicate().clear()).get(bytes);
output.write(bytes, 0, bytes.length);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}