请教各位一个问题(我的android版本是2.3.1)1、在没有插入SD卡的时候,Environment.getExternalStorageState()的返回值为MEDIA_MOUNTED,因为他把NAND flash挂载到了/mnt/sdcard/external_sd目录下
2、当插入sd卡的时候,Environment.getExternalStorageState()也为MEDIA_MOUNTED,同时把sd卡挂到了那个目录下这种情况,有什么办法去判断是否真正插入了sd卡?谢谢

解决方案 »

  1.   

    http://dev.10086.cn/cmdn/wiki/index.php?doc-view-7232.html
      

  2.   

    /*
     * Checks whether the SD Card is present or not
     */
         public static int isSdPresent() {
            Boolean sdcardpresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
            
            if(sdcardpresent){
             StatFs stat = new StatFs(android.os.Environment.getExternalStorageDirectory().getPath());
             long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
             long megAvailable = bytesAvailable / 1048576;
             if(megAvailable>0.5){
              return 0;
             }else{
             return 2;
             }        }else{
             return 1;
            }
            
             
         }
      

  3.   

    各位大侠,Environment.getExternalStorageState()这个API无法检测到是否是真的SD卡,因为无论我是否挂载SD他都是true,因为没有SD的时候它会自动把NAND flash挂载到相应的目录下我目前采用的方法是读kernel的kmsg文件,里面会记录sd卡插拔情况
    可是这个办法又是因机型而异的,不知有没其他办法谢谢各位