我写了一个简单的应用程序来查看图片。但是,在发送具有共同意图的图片之后:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("URLSTRING"));
shareIntent.setType("image/jpeg");
mActivity.startActivity(Intent.createChooser(shareIntent, "SHARE"));
如果我选择Google环聊,可以成功发送图片。但在那之后它被删除了!
使用其他文件管理器应用程序(root explorer)进行测试,这是相同的行为!
但是,使用GooglePlusGallery应用程序发送图片似乎没有这个问题。
诀窍是什么?如何避免图片被删除?
答案 0 :(得分:0)
我遇到与环聊相同的问题。它似乎删除了文件,即使它没有成功发送它,因此总是在调用intent之前将文件复制到新的临时文件。
答案 1 :(得分:0)
我有同样的问题,我相信会暴露一个内容提供者而不是uri可以解决。
答案 2 :(得分:0)
这里的问题相同。我的应用甚至没有存储写入权限,所以我假设环聊实际上是删除图像。
因此,我不是直接共享文件,而是首先制作副本。 这是完整的解决方案:
Bitmap bm = BitmapFactory.decodeFile(filePath); // original image
File myImageToShare = saveToSD(bm); // this will make and return a copy
if (myImageToShare != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(myImageToShare));
shareIntent.setType("image/jpeg");
context.startActivity(Intent.createChooser(shareIntent, "Share using"));
}
private File saveToSD(Bitmap outputImage){
File storagePath = new File(Environment.getExternalStorageDirectory() + yourTempSharePath);
storagePath.mkdirs();
File myImage = new File(storagePath, "shared.jpg");
if(!myImage.exists()){
try {
myImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
myImage.delete();
try {
myImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream out = new FileOutputStream(myImage);
outputImage.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
return myImage;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}