gpt4 book ai didi

android - Environment.getExternalStorageDirectory 不返回可移动存储的路径

转载 作者:IT王子 更新时间:2023-10-29 00:02:17 28 4
gpt4 key购买 nike

从 API 级别 8 开始,Android 似乎重新定义了“外部”存储是什么。通读http://developer.android.com/reference/android/os/Environment.html ,附加到 getExternalStorageDirectory 的文档中,我看到了评论:“不要被这里的‘外部’这个词混淆。这个目录可以更好地被认为是媒体/共享存储......在设备中多个“外部”存储目录...,此目录代表用户将与之交互的“主要”外部存储。”

我的应用程序将文件写入由 getExternalStorageDirectory 获得的路径,并且我让用户要求选择写入其可移动 SD 卡的选项。我一直认为 getExternalStorageDirectory 返回了可移动 SD 卡的路径,但这不再是真的。如何访问此 SD 卡的路径?

最佳答案

According to the source , getExternalStorageDirectory 实现返回设备环境中设置为“外部存储”的任何内容:

public static File getExternalStorageDirectory() {
return EXTERNAL_STORAGE_DIRECTORY;
}

EXTERNAL_STORAGE_DIRECTORY 是:

private static final File EXTERNAL_STORAGE_DIRECTORY
= getDirectory("EXTERNAL_STORAGE", "/sdcard");

static File getDirectory(String variableName, String defaultPath) {
String path = System.getenv(variableName);
return path == null ? new File(defaultPath) : new File(path);
}

相比之下,getExternalStoragePublicDirectory(String type) 需要以下字符串之一:

DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, or DIRECTORY_DCIM. May not be null.

所以它并不意味着返回 sd 卡根目录。

另一种选择:

最后,getExternalStorageState() 将返回挂载在/mnt/sdcard/ 中的文件系统。根据 CommonsWare 在这个答案中的说法:Find an external SD card location ,没有办法直接获取外部sdcard(如果它甚至存在的话)。

另一种方法是检查 isExternalStorageRemovable () 并在其为 false 时提供手动选项。

关于android - Environment.getExternalStorageDirectory 不返回可移动存储的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049114/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com