android 获取U盘路径

Android 码拜 10年前 (2015-05-10) 7063次浏览 0个评论
 

最近在做一个支持U盘设备的平板,想请教下,如何判断是否有U盘接入,如何读取U盘的路径,Environment.getExternalStorageState()只能读取到SD卡的路径。

你好。
获取UBB等大容量的设备一般使用下面命令:
Environment.getExternalUsbStorageDirectory().getPath();
希望您试下。
但是,支持U盘好像要修改源代码。
引用 1 楼  的回复:

你好。
获取UBB等大容量的设备一般使用下面命令:
Environment.getExternalUsbStorageDirectory().getPath();
希望您试下。

getExternalUsbStorageDirectory()这个方法是找不到的,没有提供该方法

30分
如果支持U盘设备的话默认目录好像是/udisk,直接用这个路径不就可以了
10分
这要看固件了,外接设备都是厂商自己定义的,android没有直接的api获取
请问楼主有什么方法了吗?读取U盘
你从串口看Dev下的设备,当插上U盘时多出的接口,在/etc/vold.fstab的目录里添加U盘挂载项
请问楼主解决了吗?源码能给我发一份吗?
2210225420@qq.com
http://download.csdn.net/detail/alter888/7146089
这是例子,看看吧
楼主找到方法没有呀?  求知道
@Override
public void onReceive(Context context, Intent intent) {

String path = intent.getDataString();
path = path.substring(11) + “/”; // path=file:///mnt/usb
if (intent.getAction().equals(Intent.ACTION_MEDIA_MOUNTED)
|| intent.getAction().equals(Intent.ACTION_MEDIA_CHECKING)) {
msg.arg1 = USB_STATE_ON;
} else {
msg.arg1 = USB_STATE_OFF;
Toast.makeText(context, “USB被拔出”, Toast.LENGTH_LONG).show();
}

}///String path = intent.getDataString();这个就是获取的路径

网上找了好久 都是些sd卡 或者其他扯淡的玩意 没一个解决方案 浪费了半天时间 其实就那么一句话 
都是扯淡啊!我觉得楼主和我遇到的问题一样,如果不通过广播,当APP第一次运行时,广播还未实现插拔监听,如何知道USB 或者SD卡已挂载。查了半天API也没找到直接获取USB挂载状态的API,我只能另想办法。
因为android系统在有外接设备时会自动往此挂载路径写入一个“LOST.DIR”文件夹,若是没有挂载,即使有路径也是空,所以我只能通过死路径(比如:/mnt/udisk)
String path = “/mnt/udisk”;
File file = new FIle(path);
if(file.length()  == 0){}
这个笨办法来判断USB设备是否挂载,但是这个方法自己都看不过眼,要是底层定制时更改了USB存储设备路径或名称就傻逼了,不知是否有高人完美解决这个方法(注:不要再说用什么广播监听之类的办法了,APP刚开始还没注册广播呢),共享出来感谢不尽啊!
private static final String MOUNTS_FILE = “/proc/mounts”;

public static boolean isMounted(String path) {
        boolean blnRet = false;
        String strLine = null;
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(MOUNTS_FILE));

            while ((strLine = reader.readLine()) != null) {
                if (strLine.contains(path)) {
                    blnRet = true;
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                reader = null;
            }
        }
        return blnRet;
    }

android系统根目录下有/proc/mounts文件,里面有所有挂载信息,用以上方法应该可以判断某个路径是否挂载


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android 获取U盘路径
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!