sdcard0和sdcard1去SD名称可以判断

解决方案 »

  1.   

    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();
    }
      

  2.   

    没错,Environment.getExternalStorageDirectory()在有外置T卡时使用外置,此时内置的地址是sdcard1,否在内置的是sdcard0Environment的isExternalStorageEmulated方法可以判断是否有external T卡