通过 WhatsApp Intent 发送图片 - 错误图片

Send Image via Intent by WhatsApp - Wrong Image

我认为这是一个流行的问题,但找不到与之相关的任何内容。所以这就是我想要的: 我正在尝试使用以下代码通过 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 仍然显示第一个图像。

我的所作所为和我的想法导致了问题:

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

有人知道问题出在哪里吗? Uri错了吗?如果我打印 Uri.fromFile(f) 它说 file:///storage/sdcard0/temporary_file.jpg

谢谢!

妮可

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

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