【发布时间】:2012-05-16 06:38:07
【问题描述】:
我尝试使用此代码下载图像并保存: 在这一行:
OutputStream os =new FileOutputStream(f);
我在模拟器上试了一下。我的应用程序得到异常,没有权限保存到这个路径:
java.io.FileNotFoundException: /mnt/sdcard/InterFlora/1221618532: open failed: EACCES (Permission denied)
我也添加了这一行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这是代码:
RetreiveImage extends AsyncTask<String, Void,Bitmap> {
Item m_item;
File f;
public RetreiveImage(Item aItem , File aFile){
m_item = aItem;
f = File (m_Sdcard.getAbsolutePath() + "/myFolder");
}
@Override
protected Bitmap doInBackground(String... params) {
try
{
Bitmap bitmap=null;
InputStream is=new URL(m_item.small).openStream();
OutputStream os =new FileOutputStream(f);
os.close();
return bitmap;
}
catch (MalformedURLException e) {
return null;
} catch (IOException e) {
return null;
}
}
}
编辑
File m_Sdcard = Environment.getExternalStorageDirectory();
File cacheDir =new File (m_Sdcard.getAbsolutePath() + "/MyFolder");
if(!cacheDir.exists())
cacheDir.mkdirs();
【问题讨论】:
-
您应该在清单文件中添加 android.permission.WRITE_EXTERNAL_STORAGE 权限
-
显示您的清单以及您添加此行的位置
-
我认为你应该先创建包含目录
-
我按照我在帖子中说的创建它,也许在模拟器中它是不同的?
-
顺便说一下 mkdirs 返回什么?