sdCardDir = Environment.getExternalStorageDirectory();这个难道获取的不是sd卡路径

解决方案 »

  1.   

    一个是手机内存sdcard0,一个是sd卡sdcard1。
      

  2.   

    sdCardDir = Environment.getExternalStorageDirectory();这个难道获取的不是sd卡路径,
    我用这个为什么没有写到sd卡,???
      

  3.   

    问题是为什么 Environment.getExternalStorageDirectory();得到的不是sd卡路径
      

  4.   

    为什么?????????问题是为什么 Environment.getExternalStorageDirectory();得到的不是sd卡路径
      

  5.   

    一个是内置,一个是外置的
    内置即你买手机时说的xxG
      

  6.   

    看着这贴的回复我都纠结了,,回的什么贴明显就是骗积分的嘛,..我也不是清楚。Environment.getExternalStorageDirectory()这个只是获取一个外置sd卡。但是4.0以后很多手机rom很大了且有些根本不需要外置sd卡了,于是安卓4.0后就会把机身内存rom还划分一部分当作外置sd卡使用,而且这个Environment.getExternalStorageDirectory()不同的手机厂商获取的目录名字可能不同哦大部分是/mnt/sdcard,不过你完全可以当作“外置sd卡使用了
      

  7.   

    是啊,我也是只能读取到sdcard0,楼主说下解决办法啊
      

  8.   

    具体的API没找到,但是我有一个方案。通过内部SD卡目录获取上一级菜单,然后得到和内部SD卡同级文件夹列表,得到外部SD卡目录。PS:因为SD卡是可读可写的,可以以此作为判定条件。
    private TextView tv;
    StringBuffer buffer;
    File innerDir;
    File root;
    File[] list; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView) findViewById(R.id.tv);
    innerDir = Environment.getExternalStorageDirectory();
    root = innerDir.getParentFile();
    list = root.listFiles();
    buffer = new StringBuffer();
    buffer.append("data目录:" + Environment.getDataDirectory());
    buffer.append("\n");
    buffer.append("下载缓存目录:" + Environment.getDownloadCacheDirectory());
    buffer.append("\n");
    buffer.append("外部存储媒体目录:" + Environment.getExternalStorageDirectory());
    buffer.append("\n");
    buffer.append("android根目录:" + Environment.getRootDirectory());
    buffer.append("\n");
    for (File file : list) {
    if (file.compareTo(innerDir) != 0&&file.canWrite()) {
    buffer.append("外接SD卡目录:" + file);
    buffer.append("\n");
    }
    }
    tv.setText(buffer);
    }
    如果有人看到这个贴,有更好答案的话就贴上来吧,4.0之后改进很多,写程序也有些麻烦
      

  9.   

    在其他地方找到一种解决方案:3.0以上可以通过反射获取:
    StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
    // 获取sdcard的路径:外置和内置
    String[] paths = (String[]) sm.getClass().getMethod("getVolumePaths", null).invoke(sm, null);源自:http://www.oschina.net/question/157093_108899