Ant*_*nio 15 java android galaxy
我有
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中,但是在尝试创建目录时失败了
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");
}
Run Code Online (Sandbox Code Playgroud)
外部存储的状态是"已挂载",但test无法创建目录并且输出为"FAILED WHILE CREATING DIRECTORY".
在手机中浏览"应用信息",标记为我的应用程序激活"修改或删除USB存储器内容"的权限.
可能是什么原因造成的?手机的一些特殊设置?这是搭载Android 4.3(API18)的三星GT-I9506.需要注意的是,getExternalStorageDirectory它不在SD卡上,而是在内部存储器(/storage/emulated/0/)上.
在与同事谈话时,似乎这个设备在被植根之后经历了几次调整(允许特定应用程序直接在SD卡上写入).可能不值得进一步调查,我只需切换到另一台设备.我会保留设备一段时间,如果有人会出现答案,我会快速测试它是否解决了问题.
问题仍然没有解决,但如前所述,这很可能是这个设备非常具体的.不可能在任何路径上写入,无论是外部存储还是内部存储,甚至不能在返回的路径中写入getExternalCacheDir().
尝试这个:
final File externalStoragePublicDirectory = Environment.getExternalStorageDirectory();
File file = new File(externalStoragePublicDirectory, "test");
file.mkdirs();
Run Code Online (Sandbox Code Playgroud)