由于安卓系统的可随意定制性,同是TF卡在不同厂家的安卓平台下有可能被识别为不同的路径比如:有的平台下会被识别为:/mnt/extsd,而有的平台下会被识别为:/sdcard/Tflash。请高人给一段在所有平台下均能列举出系统下所有SD(TF)卡路径的JAVA代码。

解决方案 »

  1.   

    厂家无论怎么修改sdcard的路径,它在framework层Environment.java文件中肯定指定其所在的sdcard路径变量EXTERNAL_STORAGE_DIRECTORY。所以你在应用程序里面只要调用这个函数Environment.getExternalStorageDirectory()在不同的安卓平台上面就会得到正确的sdcard的路径了;
      

  2.   

    但是 Environment.getExternalStorageDirectory() 只能返加一个路径呀,如果系统里除了内置的SD卡外还插了一个TF卡的话,使用Environment.getExternalStorageDirectory()怎么同时得到两个存储器的路径呢?
      

  3.   

    这个问题 我也遇到过 我是取出mnt 目录底下所有的 非隐藏的,可读的目录,然后尽量排除那些obb asec 这样的已知非存储盘目录;
      

  4.   

    你想在Java里面搞定,那就比较难办啦,各种不同的厂家将多个sdcard卡挂载的目录都不一样。如果机器有root权限,调用mount命令,利用返回的结果,或许可以知道sdcard所挂载的路径,但是这种方式不适合所有的机器。
      

  5.   

    这个多U盘,我们以前的板子上面倒是也做过这个功能。但是那些路径基本都是我们自己定义的,然后在Environment.java定义返回的路径。我想对于不同的厂家,定义的路径肯定都是不一样的。这个要想查出来,而且又想自己的程序满足所有的机型,这个我感觉难度比较大。或许你可以参考6楼的方法,遍历查找mnt目录下面的文件夹。
      

  6.   

    常用路径:public static String sdcard_dir = "/mnt/external_sd";public static String flash_dir = "/mnt/sdcard";第一个是TF卡,第二个是内置SD卡,
      

  7.   

    可以通过分析vold挂载的磁盘来枚举吧。
      

  8.   


    这个不通用吧,我有一款测试机的TF卡的路径是:/mnt/sdcard/tflash
      

  9.   

    最简单的方法就是查询/mnt路径下的目录,并测试是否可读,如果可读的话就可以认为是一类存储。
      

  10.   

    查/etc/vold.fstab文件(2.1是vold.conf)
      

  11.   

    的修改mountservice的代码
    还有就是/etc/vold.fstab
      

  12.   

    android 不知道
    但是如果是普通linux,方法多了,用shell就能做到
    sd卡一定会在/dev/下生成mmcblkx 以及mmcblkxpx 这样的设备节点
    /proc/mount 里包含当前所有的挂载信息 
    分析分析就知道了 
      

  13.   

    你想在Java里面搞定,那就比较难办啦,各种不同的厂家将多个sdcard卡挂载的目录都不一样。如果机器有root权限,调用mount命令,利用返回的结果,或许可以知道sdcard所挂载的路径,但是这种方式不适合所有的机器。 
     是的,是这样的
      

  14.   

    就跟在非手机操作系统识别卡类似,你把路径写在 xml里面,你识别他在哪里,你得xml存储就改变下,不就ok了
      

  15.   

    这个多U盘,我们以前的板子上面倒是也做过这个功能。但是那些路径基本都是我们自己定义的,然后在Environment.java定义返回的路径。我想对于不同的厂家,定义的路径肯定都是不一样的。这个要想查出来,而且又想自己的程序满足所有的机型,这个我感觉难度比较大。或许你可以参考6楼的方法,遍历查找mnt目录下面的文件夹。
      

  16.   

    挂载SD卡的时候不是会发送一个通知到statusbar吗?研究一下这个通知中是否包含有sd卡的路径信息