【发布时间】:2018-02-01 03:21:36
【问题描述】:
我知道这是 Stackoverflow 中多次被问到的问题,我已经看到了这些问题。答案建议检查权限,重新启动设备,检查父目录是否存在等。我尝试了所有这些,但仍然无法正常工作。
我在清单中指定了Manifest.permission.WRITE_EXTERNAL_STORAGE 权限。
以下是我的代码。
File newFile = new File(parent.getCanonicalPath() + "/" + dirName + "/");
if(!newFile.exists()){
boolean created = newFile.mkdirs();
if(!created){
int permission = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE);
boolean permissionGranted = (permission == PackageManager.PERMISSION_GRANTED);
Log.e(getClass().getSimpleName(), "Could not create directory "
+ ", Parent exists : " + parent.exists()
+ ", Parent Dir writable : " + parent.canWrite()
+ ", Permission granted : " + permissionGranted);
}
}
日志打印出来
Could not create directory, Parent exists : true, Parent Dir writable : true, Permission granted : true
我通过它的 TreeUri 获得了对 sdcard 的写入权限,然后我将树 uri 转换为实际路径以将其与 File 类一起使用。
我的 minSdkVersion 是 19,而 targerSdkVersion 是 25
我做错了什么?
编辑:
我尝试了上述所有建议,但都失败了。现在,我使用 DocumentFile 解决了这个问题。我现在可以创建新的目录和文件。但我仍然不确定 File 发生了什么。谁能告诉我发生了什么?
我做了测试,
设备:联想 A2010-A
安卓版本:5.1
【问题讨论】:
-
您能否也发布您的最终
newFile.path?整个异常堆栈更好
标签: android storage android-sdcard