5 月 22 日最近更新后,在 whatsapp 上分享的图片损坏了

Sharing image on whatsapp broken after recent update on 22nd may

我正在使用通用图像加载器,并且能够使用此代码将图像从我的应用转发到 whatsapp

public static void shareImage(Context context, File pictureFile, String text) {
    Uri imageUri = Uri.parse(pictureFile.getAbsolutePath());
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
    shareIntent.putExtra(Intent.EXTRA_TEXT, text);

    shareIntent.setType("image/*");
    context.startActivity(Intent.createChooser(shareIntent, "Share"));
}

但随着最近的 whatsapp 更新于 5 月 22 日。我收到“文件格式不受支持”提示。

较早的图像共享适用于

shareIntent.setType("image/*");

但在最近的更新中,需要进行以下更改才能在 whatsapp 上共享图像

public class ImageFileNameGenerator implements FileNameGenerator {
    @Override
    public String generate(String imageUri) {
        String extension = imageUri.substring(imageUri.lastIndexOf("."));
        return String.valueOf(imageUri.hashCode() + extension);
    }
}

更新配置

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
        .defaultDisplayImageOptions(defaultOptions)
        .diskCacheFileNameGenerator(new ImageFileNameGenerator())
        .build();
ImageLoader.getInstance().init(config);

图片分享代码

public static void shareImage(Context context, File pictureFile, String text) {
    String imagePath = pictureFile.getAbsolutePath();

    Uri imageUri = Uri.parse(imagePath);
    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
    shareIntent.putExtra(Intent.EXTRA_TEXT, text);

    String imageFileExtension = imagePath.substring(imagePath.lastIndexOf("."));

    shareIntent.setType("image/" + imageFileExtension);
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    context.startActivity(Intent.createChooser(shareIntent, "Share"));
}