通过 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 仍然显示第一个图像。
我的所作所为和我的想法导致了问题:
- 如果临时文件存在,我通过
f.delete()
删除了它
- 然后我用 MediaScanner 更新了 Gallery,因为我认为我放入 Extra 的 URI 不是最新的...
供参考:临时文件包含正确的图像:如果我使用 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();
}
我认为这是一个流行的问题,但找不到与之相关的任何内容。所以这就是我想要的: 我正在尝试使用以下代码通过 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 不是最新的...
供参考:临时文件包含正确的图像:如果我使用 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();
}