android 有多张sdcard,如何用代码获取到指定的sdcard

小纯洁 发布于 2013/04/30 12:23
阅读 8K+
收藏 2

有的手机或者平板,会内置一个sdcard,使用Environment.getExternalStorageDirectory()可以获取到。/mnt/sdcard

再插入一张sdcard后,其路径为/mnt/sdcard2  ,请问大家如何通过代码获取呢? 

因为有的手机第二张扩展卡名称可能是这样 /mnt/ext_sdcard  ,所以不能通过写死文件名方法来做。

大伙有啥好办法不?

加载中
1
chong子
chong子

3.0以上可以通过反射获取:

StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
// 获取sdcard的路径:外置和内置
String[] paths = (String[]) sm.getClass().getMethod("getVolumePaths", null).invoke(sm, null);

骑马的柱子
骑马的柱子
这种方法很不错
0
tesla1984
tesla1984

实际上是没有什么好办法的,Environment.getExternalStorageDirectory()该方法获得的路径也是写死的(请看源码)

你可以看看这个http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location

目前的一些方法在某些机器上还是不行

0
小纯洁
小纯洁

引用来自“tesla”的答案

实际上是没有什么好办法的,Environment.getExternalStorageDirectory()该方法获得的路径也是写死的(请看源码)

你可以看看这个http://stackoverflow.com/questions/5694933/find-an-external-sd-card-location

目前的一些方法在某些机器上还是不行

谢谢哦!
0
adgkns
adgkns

Android 4.1上

StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);

String[] volumePaths = sm.getgetVolumePaths();

可以获得所有mount的SD卡。


adgkns
adgkns
@华丽的银 隐藏方法并不需要反射调用,直接就可以调用了。只是这个方法是不公开的。后面平台未必有这个方法。
华丽的银
华丽的银
getVolumePaths这个方法是隐藏方法,要用反射调用
返回顶部
顶部