我想将我的位图保存到缓存目录。 我使用这段代码:
try {
File file_d = new File(dir+"screenshot.jpg");
@SuppressWarnings("unused")
boolean deleted = file_d.delete();
} catch (Exception e) {
// TODO: handle exception
}
imagePath = new File(dir+"screenshot.jpg");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
它工作正常。但是,如果我想将不同的img保存到相同的路径,那么就会出现问题。我的意思是它被保存到相同的路径,但我看到它的旧图像,但当我点击图像时,我可以看到我第二次保存的正确图像。
也许它来自缓存,但我不想看到旧图像,因为当我想与whatsapp旧图像共享该图像时,如果我发送图像,它似乎是正确的。
我想在whatsapp上分享已保存的图片,如下代码:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imagePath));
shareIntent.setType("image/jpeg");
startActivityForResult(Intent.createChooser(shareIntent, getResources().getText(R.string.title_share)),whtsapp_result);
我该如何解决?
提前感谢。
答案 0 :(得分:3)
最后我解决了这个问题:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, getImageUri(context,bitmap_));
shareIntent.setType("image/jpeg");
startActivityForResult(Intent.createChooser(shareIntent, getResources().getText(R.string.title_share)),whtsapp_result);
v
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "TitleC1", null);
return Uri.parse(path);
}
答案 1 :(得分:0)
这只是一个猜测,但是由于您保存了一个新图像(使用旧名称或其他名称,这是不相关的),您应该将媒体扫描发送到该路径,以便使用新内容更新媒体提供者。 / p>
请参阅here:
MediaScannerConnection.scanFile(context, new String[]{imagePath}, null, null);
甚至更好,等待扫描完成:
MediaScannerConnection.scanFile(context, new String[]{imagePath}, null, new OnScanCompletedListener() {
@Override
void onScanCompleted(String path, Uri uri) {
// Send your intent now.
}
});
无论如何,在保存新文件后,应将其称为。正如我所说,我没有测试,这只是一个随机的猜测。