在我的Android项目中,我试图将位图保存到给定位置的SD卡。
当我运行此操作时,我每次都会得到一个IOException
,说许可被拒绝。这是在创建FileOutputStream。
这让我相信我缺少权限,但我包含READ and WRITE_EXTERNAL_STORAGE
。它们在我的uses-sdk
块之前声明,并且在应用程序块之外。我还read/write
发送到我的应用程序中其他地方的文件,并且工作得很好。我当前的代码已经过修改,以匹配我在网上找到的几个解决方案,但我无法成功保存bitmap
文件。
如果有人能指出我的错误,我会非常感激。
ImageView imageView = (ImageView) findViewById(R.id.new_pnm_pic);
Bitmap bm = (Bitmap)data.getExtras().get("data");
imageView.setImageBitmap(bm);
String outPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Recruits";
try {
File d = new File(outPath);
if (!d.exists())
d.mkdirs();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd-kk-mm-ss");
String currentTime = sd.format(new Date());
File file = new File(outPath+'/'+currentTime+".jpg");
FileOutputStream fOut = new FileOutputStream(file.getPath());
bm.compress(Bitmap.CompressFormat.JPEG, 50, fOut);
fOut.flush();
fOut.close();
}
catch(IOException ioe){
Toast.makeText(this, "Nice try but didn't work", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:2)
更改此
File file = new File(outPath+'/'+currentTime+".jpg");
要强>
File file = new File(d+'/'+currentTime+".jpg");
并为清单文件添加权限: -
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
修改强>
在我们开始将图像保存到SD卡之前,我们需要检查是否sd card is mounted or not。