【发布时间】:2016-07-12 09:31:29
【问题描述】:
如何在 android 中获取 extSdcard 路径?
有 2 个存储,第一个是所有手机都有的外部存储,但还有第二个存储,称为可移动存储(micro sdcard)。
我想在android中获取micro sdcard的路径,怎么可能?
【问题讨论】:
如何在 android 中获取 extSdcard 路径?
有 2 个存储,第一个是所有手机都有的外部存储,但还有第二个存储,称为可移动存储(micro sdcard)。
我想在android中获取micro sdcard的路径,怎么可能?
【问题讨论】:
从 KitKat 开始,您可以访问获取该目录的方法:
Context.getExternalFilesDirs()
请注意,如果在访问过程中未挂载或移动 SD 卡,则可能返回 null。此外,您可能需要将这些权限添加到清单文件中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
显然有些用户在使用这种方法时遇到了问题,没有返回 SD 卡路径。我在this post 上找到了一些有用的信息,说明它如何工作以及如何不能依赖于设备。
【讨论】:
检查此https://developer.android.com/guide/topics/data/data-storage.html#filesExternal 以获取完整参考,因为您需要定义读取和写入外部 SD 的权限,上述链接中还有代码可在执行任何操作之前检查 SD 卡是否可用
【讨论】:
以下对我有用!
File[] Dirs = ContextCompat.getExternalFilesDirs(this.getApplicationContext(), null);
File path = (Dirs[1]);
String pathSD = Dirs[1].toString();
int firstOpen = pathSD.indexOf("/");
int secondOpen = pathSD.indexOf("/", firstOpen + 1);
int thirdOpen = pathSD.indexOf("/", secondOpen + 1);
String filename = pathSD.substring(firstOpen, thirdOpen + 1);
path = new File(filename);
【讨论】:
从 API 级别 24 开始,您可以使用 StorageManager 类:
https://developer.android.com/reference/android/os/storage/StorageManager#getStorageVolumes()
【讨论】: