当我尝试使用我的应用

时间:2017-02-24 17:01:18

标签: android

我做了一个异步任务才能进行下载。它应该可以工作但我的问题实际上是在下载过程的开始,当我尝试创建新的下载文件时。 这是我的代码:

        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;下载" 。目录

1 个答案:

答案 0 :(得分:1)

在Manifest文件中启动Application之前添加此权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />