我正在尝试从我的应用程序中的drawables共享图像。我一直在java.io.FileNotFoundException:/abc.jpg (read-only file system)
我的代码是
private String SaveCache(int resID) {
String path = "";
try {
InputStream is = getResources().openRawResource(resID);
File cacheDir = this.getExternalCacheDir();
File downloadingMediaFile = new File(cacheDir, "abc.jpg");
byte[] buf = new byte[256];
FileOutputStream out = new FileOutputStream(downloadingMediaFile);
while (true) {
int rd = is.read(buf, 0, 256);
if (rd == -1 || rd == 0)
break;
out.write(buf, 0, rd);
}
is.close();
out.close();
return downloadingMediaFile.getPath();
} catch (Exception ex) {
Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
return path;
}
private void ImageShare() {
String path = SaveCache(R.drawable.testsend);
Toast.makeText(this, path, Toast.LENGTH_LONG).show();
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/jpeg");
share.putExtra(Intent.EXTRA_SUBJECT, "test");
share.putExtra(Intent.EXTRA_TEXT, "test");
share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path));
try {
startActivity(Intent.createChooser(share, "Choose share method."));
} catch (Exception ex) {
ex.printStackTrace();
}
}
如果需要更多信息,我们将很乐意提供任何帮助。
答案 0 :(得分:2)
确保已安装外部存储设备。
来自getExternalCacheDir()的文档:
返回保存应用程序缓存文件的目录的路径 外部存储。如果当前不是外部存储,则返回null 因此无法确保路径存在;你需要打电话 这个方法可用时再次使用。
答案 1 :(得分:0)
http://www.anddev.org/post3469.html#p3469
您需要使用
FileOutputStream fos = openFileOutput(name,MODE);
如示例中所述。