我认为这是一个很受欢迎的问题,但我找不到与之相关的任何内容。所以这就是我想要的: 我正在尝试使用以下代码通过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()
Fyi:临时文件包含正确的图像:如果我用FileExplorer选择它,它会显示正确的图像..如果我尝试发送图像..仍然是旧图像
有谁知道问题可能是什么? Uri错了吗?如果我打印Uri.fromFile(f)
,则会显示file:///storage/sdcard0/temporary_file.jpg
谢谢!
尼科
答案 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();
}