【问题标题】:How to create folders in external SD Card on Android 4.4.2?如何在 Android 4.4.2 上的外部 SD 卡中创建文件夹?
【发布时间】:2015-11-04 02:18:32
【问题描述】:

我在清单文件中添加了读写权限。 默认情况下,我的设备有以下文件夹:

/storage/emulated/0

/storage/emulated/legacy

/storage/sdcard0

/storage/sdcard1

/storage/usbcard1

原来是不能在/storage/sdcard1中创建文件夹,这是sdcard的位置,用同样的方法我可以在/storage/emulated/0中创建文件夹。

这是我创建文件夹的方法

private static boolean CriarDiretorio(File dir) {
    if (dir.isDirectory()) return true;  // already exists
    if (dir.exists()) return false;      // already exists, but is not a directory
    return dir.mkdirs();                 // create it
}

【问题讨论】:

    标签: android android-sdcard


    【解决方案1】:

    You cannot read or write in arbitrary locations on removable storage on Android 4.4+.

    欢迎致电getExternalFilesDirs()(注:复数)。如果它返回 2 个以上的目录,则第二个和后续的目录将是可移动存储上的目录,对于您的应用来说是唯一的,您可以读取和写入。

    【讨论】:

    • 我尝试使用下面代码中的方法,但仍然无法创建新文件夹。 '文件[] ext = _context.getExternalFilesDirs("/storage/sdcard1/newfolder");布尔创建 = ext[0].mkdirs();'
    • @RenanViníciusQuadrosBarbosa:首先,ext[0] 将指向external storage 上的一个位置,而不是removable storage。其次,getExternalFilesDirs() 的参数不是路径。您不妨查看the documentation for getExternalFilesDirs()
    • 知道了。你有使用getExternalFilesDirs(字符串类型)的例子吗?
    • @RenanViníciusQuadrosBarbosa:不方便,因为我倾向于避免使用可移动存储。而且,对于getExternalFilesDir()(单数),我只是将null 作为参数传递。
    • @KarandeepAtwal:我的理解是像 ES 这样的工具在 Android 5.0+ 上使用ACTION_OPEN_DOCUMENT_TREE 来“授予使用 SD 卡的权限”。从那里,DocumentFile 允许您遍历文档层次结构、创建新文档等。这在 Android 4.4 上不可用,我不知道 ES 可能在那里做什么,除了可能利用一些安全漏洞。跨度>
    【解决方案2】:

    最好的方法是先root操作系统,然后使用root explorer。或者使用其中一个第 3 方文件管理器创建一个文件夹和文档以写入内部存储卡,完成写入文档和创建文件夹后,然后使用 Kitkat OS 附带的内部文件管理器复制创建的文件夹和文档到外部 SD 卡。目前,这是在一个了不起的程序员黑客可以解决问题之前的唯一方法。

    【讨论】:

      猜你喜欢
      • 2016-01-08
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多