我做了一个异步任务才能进行下载。它应该可以工作但我的问题实际上是在下载过程的开始,当我尝试创建新的下载文件时。 这是我的代码:
protected String doInBackground(String... strings) {
InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
try {
URL url = new URL("http://i.imgur.com/yLCSdue.png");
connection = (HttpURLConnection) url.openConnection();
connection.connect();
if(connection.getResponseCode() != HttpURLConnection.HTTP_OK)
{
return "Server returned HTTP " + connection.getResponseCode() + " " + connection.getResponseMessage();
}
int fileLength = connection.getContentLength();
input = connection.getInputStream();
Log.i("loc", "" + Environment.DIRECTORY_DOWNLOADS);
output = new FileOutputStream(Environment.getRootDirectory()+ "/" + Environment.DIRECTORY_DOWNLOADS + "/image.jpg");
Log.i("download", "downloading");
当我运行它时,我得到了例外:
W/System.err: java.io.FileNotFoundException: /system/Download/image.jpg (No such file or directory)
我尝试了不同的方向,如:
output = new FileOutputStream("image.jpg");
我得到了这个例外:
W/System.err: java.io.FileNotFoundException: image.jpg (Read-only file system)
我试图使用:
output = new FileOutputStream("/storage/emulated/0/Download/image.jpg");
得到了:
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Download/image.jpg (Permission denied)
我不知道该怎么做,所以我可以创建文件并写入它。 我没有在清单中找到任何可以帮助我解决这个问题的权限。我想写内部存储到#34;下载" 。目录
答案 0 :(得分:1)
在Manifest文件中启动Application之前添加此权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />