好吧,不完全是。
毕竟,这就是StackOverflow所说的。 如果您实际在三星设备上尝试上述方法,那么生活对您而言将不会很有趣。 实际上,大多数三星设备上的Environment.getExternalStoreDirectory()返回的路径都不正确。 这就是我遇到的问题。 事实证明,以上方法实际上并不能保证它会返回SD卡目录。 根据Android的API 文档 ,
“在具有多个“外部”存储目录(例如安全应用程序存储和可挂载的共享存储)的设备中,该目录表示用户将与之交互的“主要”外部存储。”
因此,该呼叫不能保证返回的路径确实指向SD卡。 不过,还有其他几种方法可以在设备上获取可以存储文件的“外部”路径,例如getExternalFilesDir() 。
还有其他一些技巧可以实际获取SD卡目录的路径。 以下代码适用于大多数Android设备(包括三星)。 不过,这是一个非常骇人听闻的解决方案,谁知道此技巧将实际起作用多长时间( 来源 )。 最好使用以下问题,而不是使用下面的代码:“我真的需要SD卡目录,还是仅要将文件存储到的路径?”
File file = new File("/system/etc/vold.fstab");
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
if (fr != null) {
br = new BufferedReader(fr);
String s = br.readLine();
while (s != null) {
if (s.startsWith("dev_mount")) {
String[] tokens = s.split("\\s");
path = tokens[2]; //mount_point
if (!Environment.getExternalStorageDirectory().getAbsolutePath().equals(path)) {
break;
}
}
s = br.readLine();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fr != null) {
fr.close();
}
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
祝您编程愉快,别忘了分享!
参考: Android教程:通过Programming Mobile博客从我们的JCG合作伙伴 Isaac Taylor 查找SD卡路径 。
翻译自: https://www.javacodegeeks.com/2012/10/android-finding-sd-card-path.html