最近在做一个文件管理器,需要用到sdcard的路径,因为不同的机子挂载的路径不一样,所以只能动态获取,
目前的做法是监听系统的广播,但是如果在文件管理器打开之前就已经挂载了sdcard,这样广播收不到也得不到路径,跪求好方法。

解决方案 »

  1.   

    我也正在搞这样的程序,以下代码你可以试试private boolean IsHaveSdCard()
    {// 判断是否有sdcard
    if (Environment.getExternalStorageState().equals(// 可正常操作
    Environment.MEDIA_MOUNTED))
        {
        return true;
        }
    else if (Environment.getExternalStorageState().equals(// 连接在电脑上
    Environment.MEDIA_SHARED))
        {//Error是自己写的类, Error.MsgBox显示一个对话框
        Error.MsgBox(mContext, "执行本软件时,请不要将手机连接在电脑上", "错误");     }
    else
        {// MsgBox msg=new MsgBox("没有可用的SDCard,程序无法初始化","错误",0,1);
        Error.MsgBox(mContext, "没有可用的SDCard,程序无法初始化", "错误");     } return false;
    }
      

  2.   

    楼上判断是否有sd卡,以下获得sd卡路径
    SDCardRoot = Environment.getExternalStorageDirectory()
    .getAbsolutePath() + File.separator 
      

  3.   

    提供一个思路,可以通过STORAGE_SERVICE获得挂载点
      mStorageManager = (StorageManager)getSystemService(Context.STORAGE_SERVICE); 
     storageVolumes = mStorageManager.getVolumeList();