java - 尽管权限显然设置正确,但无法在外部存储中创建目录

标签 java android galaxy

我有

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

在我的 list 文件中,但是我在尝试创建目录时失败了

    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"

在手机中浏览到“应用信息”,“修改或删除您的USB存储的内容”权限被标记为为我的应用激活。

这可能是什么原因造成的?电话的一些特殊设置?这是一款搭载 Android 4.3 (API18) 的三星 GT-I9506。需要注意的是,getExternalStorageDirectory 不是在 SD 卡上,而是在内部存储(/storage/emulated/0/)上。


更新:

与同事交谈,该设备似乎在 root 后进行了多次调整(以允许特定应用程序直接写入 SD 卡)。可能不值得进一步调查,我会简单地切换到另一个设备。我会保留该设备一段时间,如果有人给出答案,我会快速测试它是否能解决问题。


更新 2:(赏金结束)

问题仍未解决,但如前所述,这很可能是这台设备特有的问题。不可能写入任何路径,无论是外部存储还是内部存储,甚至不能写入 getExternalCacheDir() 返回的路径。

最佳答案

在我的例子中,我必须进入 Settings -> Apps -> NameOfApp -> Permissions 并激活存储权限。如果我拥有 AndroidManifest.xml 的所有权限,我不知道为什么默认情况下它会停用。我使用的是搭载 Android Marshmallow 6.0 的 Moto G(第 3 代)。

关于java - 尽管权限显然设置正确,但无法在外部存储中创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305100/

相关文章:

android - Galaxy Tab 模拟器上的传感器

java - Android Camera2 API Flash 不适用于银河设备

java - Crawler4j vs. Jsoup Java 页面爬取解析

java - 被测产品没有有效的网站证书? (使用 HTMLUnit/Java)

java - Cassandra 控制台日志消息

java - 如何在Java中对不同数字的字符串进行正确排序?

android - SDK 平台工具版本 ((23)) 太旧,无法检查使用 API 23 编译的 API

android - 为什么 CoordinatorLayout 在底部显示空白?

android - AlertDialog 在某些设备上破坏了布局

java - 任务不是由 servlet 执行的