在程序中如何区分内置sdcard和外部sdcard

在程序中怎么区分内置sdcard和外部sdcard

 各位大神你们好:
    
      本人遇到一个迷茫了很久的问题:
                              我现在要开发一个应用,它可以查看手机内部sdcard上面的内容,也可以查看外接sdcard上面的内容,我该怎么区分这两个sdcard呢?假设有两个按钮 ,一个点击可以查看内部sdcard,一个点击可以查看外部sdcard,在程序上用什么思路可以实现。。。求大神,求思路
------解决方案--------------------
sdcard0和sdcard1去SD名称可以判断
------解决方案--------------------
内置外置只是表面效果,系统内部是不区分的,建议楼主在首次使用的时候配置一下,之后就按照配置操作。
------解决方案--------------------
String EmmcPath = null;
try {
Class<?> clazz = Class.forName("android.os.SystemProperties");
Class<?> clazz1 = Class.forName("android.os.Environment");
Method methodState = clazz.getMethod("getInt", String.class,
int.class);
Method methodSD = clazz1.getDeclaredMethod("getInternalStorageDirectory", null);
int result = (Integer) methodState.invoke(null,
"persist.sys.emmcsdcard.enabled", 0);
if (result == 0) { // 当前为外部存储
SDCardPath = Environment.getExternalStorageDirectory()
.toString();
// 外部存储时的sd卡路径
EmmcPath = methodSD.invoke(null, new Object[] {}).toString(); // 外部存储时的emmc路径
} else {// 当前为内部存储
SDCardPath = methodSD.invoke(null, new Object[] {}).toString();
// 内部存储时的sd卡路径
EmmcPath = Environment.getExternalStorageDirectory().toString(); // 内部存储时的emmc路径
}
} catch (Exception e) {
e.printStackTrace();
}
------解决方案--------------------
没错,Environment.getExternalStorageDirectory()在有外置T卡时使用外置,此时内置的地址是sdcard1,否在内置的是sdcard0

Environment的isExternalStorageEmulated方法可以判断是否有external T卡