通过WhatsApp的意图发送图像 - 错误的图像

时间:2015-04-16 13:17:19

标签: android android-intent bitmap whatsapp

我认为这是一个很受欢迎的问题,但我找不到与之相关的任何内容。所以这就是我想要的: 我正在尝试使用以下代码通过WhatsApp发送图像:

public static void shareImage(Context context,Bitmap bitmap, String text){
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("image/*");
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file.jpg");
    try {
        f.createNewFile();
        FileOutputStream fo = new FileOutputStream(f);
        fo.write(bytes.toByteArray());
        fo.close();
    } catch (IOException e) {                       
            e.printStackTrace();
    }
    share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
    share.setPackage("com.whatsapp");
    context.startActivity(Intent.createChooser(share, "Share!"));
}

它工作正常,我第一次使用应用程序..正确的图像出现在WhatsApp中。如果我用我的应用程序选择另一个位图,Whatsapp仍会显示第一个图像。

我做了什么以及我的想法导致了这个问题:

  • 如果存在临时文件,我会将其f.delete()
  • 删除
  • 然后我用MediaScanner更新了Gallery,因为我认为我放入Extra的URI不是最新的...

Fyi:临时文件包含正确的图像:如果我用FileExplorer选择它,它会显示正确的图像..如果我尝试发送图像..仍然是旧图像

有谁知道问题可能是什么? Uri错了吗?如果我打印Uri.fromFile(f),则会显示file:///storage/sdcard0/temporary_file.jpg

谢谢!

尼科

1 个答案:

答案 0 :(得分:2)

您实际上是发送了第一张图片还是取消了?我有同样的问题,我只是意识到,如果你继续,将发送正确的图像。我猜这个问题是由旧的缩略图引起的。您可以使用不同的文件名。

File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temporary_file"+ System.currentTimeMillis() +".jpg");

稍后您可以删除所有以" temporary_file"

开头的文件
for (File file : Environment.getExternalStorageDirectory().listFiles()) {
            if (file.isFile() && file.getName().startsWith("temporary_file")) file.delete();
        }