在22日的最近更新后,在whatsapp上共享图像可能会损坏

时间:2016-05-29 08:41:06

标签: image android-intent sharing whatsapp universal-image-loader

我使用通用图片加载器,并能够使用此代码将图像从我的应用转发到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日。我得到 不支持文件格式'敬酒。

enter image description here

1 个答案:

答案 0 :(得分:0)

早期的图片共享适用于

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"));
}