【发布时间】:2016-01-23 03:40:18
【问题描述】:
我有
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在我的清单文件中,但是尝试创建目录时失败
Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() );
java.io.File folder = new java.io.File(Environment.getExternalStorageDirectory() + java.io.File.separator + "test");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Log.d(LOG_STRING, "Created directory");
} else {
Log.d(LOG_STRING, "FAILED WHILE CREATING DIRECTORY");
}
外部存储状态为“mounted”,但无法创建test目录,输出为"FAILED WHILE CREATING DIRECTORY"。
在手机中浏览“应用信息”,“修改或删除你的U盘内容”权限被标记为为我的应用激活。
这可能是什么原因?手机的一些特殊设置?这是一款搭载 Android 4.3 (API18) 的三星 GT-I9506。需要注意的是getExternalStorageDirectory不在SD卡上,而是在内部存储(/storage/emulated/0/)上。
更新:
与同事交谈,这款设备在 root 后似乎经历了几次调整(以允许特定应用程序直接在 SD 卡上写入)。可能不值得进一步调查,我将简单地切换到另一个设备。我会保留设备一段时间,如果有人会给出答案,我会快速测试它是否能解决问题。
更新 2:(赏金结束)
问题仍未解决,但如前所述,这很可能是这台设备特有的问题。无法在任何路径上写入,无论是外部存储还是内部存储,甚至在getExternalCacheDir() 返回的路径中也是如此。
【问题讨论】:
-
如果您不在 kitkat 上,这应该不是问题。您可以尝试按照此处的说明调试 sdcard 状态并发布结果吗? developer.android.com/intl/es/reference/android/os/…
-
@bonnyz 我知道这不是完整的测试,但作为第一个快速反馈,在尝试创建目录之前,以下返回 true:
Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState() )(根据您链接的代码,应该授予写入权限)。 -
是的,你是对的。您是否设法在其他设备上进行了测试?
-
/system/etc/permissions/platform.xml 中可能有问题。
-
@bonnyz 使用 Galaxy Note 4 (API21) 就可以了。