Android 6上的EACCES(权限被拒绝),授予权限

时间:2016-04-12 08:56:03

标签: android permissions android-sdcard android-permissions android-6.0-marshmallow

我试图在外部ResponseBody上保存SdCard,但我收到以下错误:

 java.io.IOException: open failed: EACCES (Permission denied)
 at java.io.File.createNewFile(File.java:939)
 at my.app.package.utils.DocumentFileUtils.saveDocument(DocumentFileUtils.java:120)

这是失败的方法:

public static String saveDocument(String filename, ResponseBody responseBody) {
    Logs.document("Saving file " + filename);
    File file = createFile(filename);
    Logs.document("Full path: " + file.getAbsolutePath());
    if (!file.exists()) {
        try {
            file.getParentFile()
                .mkdirs();
            file.createNewFile(); //Exception happens here
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    try {
        BufferedSource source = responseBody.source();
        BufferedSink sink = Okio.buffer(Okio.sink(file));

        sink.writeAll(source);
        sink.close();
        responseBody.close();
        return file.getAbsolutePath();
    } catch (Exception e) {
        responseBody.close();
        e.printStackTrace();
        if (file.exists()) file.delete();
        return null;
    }
}

使用createFile创建的文件具有以下路径:

/mnt/media_rw/0123-4567/Android/data/my.app.package/files/document_files/file_name.ext

我在WRITE_EXTERNAL_STORAGE运行时权限中都拥有Manifest权限,授予权限(我也可以从应用信息中检查)。< / p>

我错过了什么吗?

0 个答案:

没有答案