1

我正在尝试共享使用共享意图保存到内部存储的图像文件。在我打算不显示图像文件之后。

我使用以下代码保存图像文件

try {
    FileOutputStream fos = openFileOutput("twitterimage.jpg", Context.MODE_PRIVATE);
    // Writing the bitmap to the output stream
    bikeBm.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.close();
} catch (Exception e) {
    Log.e("saveToInternalStorage()", e.getMessage());
}

//意图代码

File internalFile = getFileStreamPath("twitterimage.jpg");
Uri uri = Uri.fromFile(internalFile);

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM,new File(uri));
shareIntent.setType("image/jpeg");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "send"));

当我使用上面的“uri”检查文件存在时,图像文件存在于内部存储中,但使用检查文件

String file = "data/data/com.bike.app/twitterimage.jpg";
File f = new File(file);

显示文件不存在。

请帮我解决这个问题。

4

1 回答 1

2

如果我猜对了,您想在应用程序之间共享图像。您的问题是您Context.MODE_PRIVATE在编写文件时使用,因此其他应用程序无法访问该文件。

要共享图像,您可以使用MediaProvider限制对您的媒体的访问或仅使用Context.MODE_WORLD_READABLE但该文件将是公共可读的。

希望有帮助

于 2013-01-10T08:54:05.070 回答