两个关于android 3.0系统中多个外接存储设备的问题:1. 我在Dell和Acer两个支持多个外接存储设备的pad上都无法接收到 ACTION_MEDIA_MOUNTED, ACTION_MEDIA_UNMOUNTED, MEDIA_EJECT事件,只能接收到 ACTION_MEDIA_SCANNER_STARTED ,有人碰到过么?是什么原因导致的?
这段代码在android 2.3.4及以前的系统上都测试成功了,不知道为什么在pad上无法接收。另,我已经在intent-filter中加入了<data android:scheme="file"/>。2. 如果我的pad上目前安装了一个额外的外接存储设备(pad自带的SD已经算是一个外接存储设备了),在这种情况下,我如何能够获得这两个外接存储设备的路径?我目前用Environment中的getExternalStorageDirectory()方法只能得到第一个设备的路径,即自带的SD卡的路径

解决方案 »

  1.   

    很多机器第二个sdcard会mount成为/mnt/sdcard2,然后link到/sdcard2.
    getExternalStorageDirectory只能获取第一个SDCARD路径,获取第二个需要用到厂家扩展的接口,但这个是厂家自己设定的。
      

  2.   

    一般设备会把自己带的SD做成/sdcard/ 而第二个就成为它目录下面的一个结点,
    比如/sdcard/external 估计插拔可能不会有消息了第二个设备结点查找一下,写成常量形式,可以不?
    我们以前也做过类似的东西,给客户扩展过API,但在标准SDK下面开发就是问题,
    所以也可以直接定义成常量访问
      

  3.   

    已自己解决:
    1. 事件问题,最后证明是特定设备问题,其他型号设备没有问题
    2. 
    a. 可以从ACTION_MEDIA_MOUNTED相关的Intent中获取本次挂接上的路径
    b. 通过在 /proc/mounts 文件中查询,可以找到目前挂接的所有外部设备