usb_storage一般是外置SD卡的路径,通过OTG连U盘几乎都是从usbhost0开始计数的,不过偶尔也有例外!
可以用记事本打开"system/etc/vold.fstab"这个文件,里面记录了外接设备的名称,识别方法自己百度或者调试!
可以用记事本打开"system/etc/vold.fstab"这个文件,里面记录了外接设备的名称,识别方法自己百度或者调试!
解决方案 »
- 鬼异的adapter的getview方法不执行?
- 我的第一个android程序安装到这里不动了??求解释
- [Android]用代码安装APK时,如何进行全自动安装?
- app图标在桌面上的边框
- 关于handler和broadcast的问题
- 为什么使用AsyncTask可以解决UI主线程阻塞的问题?
- new 出来的android project没有mainactivity.java 和 layout.xml
- 自己开发相册,其他应用程序调用怎么返回图片?
- Android手机与蓝牙模块连接兼容性问题
- android中在viewgroup中怎么让一个listview滑动的代码
- 开发一个安卓音乐播放器,搜索用的内置百度网页,下载也是百度的,算不算侵权?
- 张泽华2014年最新安卓开发视频公布下载
/*
#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
*/
public final String HEAD = "dev_mount";
private final int DEV_INTERNAL = 0;
private final int DEV_EXTERNAL = 1;
private final int DEV_USB = 2;//这个可能没有,上面两个一般都会有
private ArrayList<String> cache = new ArrayList<String>();
private static Dev_MountInfo dev;
private DevInfo info;
private final File VOLD_FSTAB = new File(
Environment.getRootDirectory().getAbsoluteFile()
+ File.separator + "etc"
+ File.separator + "vold.fstab");
public static Dev_MountInfo getInstance() {
if (null == dev)
dev = new Dev_MountInfo();
return dev;
}
private DevInfo getInfo(final int device) {
try {
initVoldFstabToCache();
} catch (IOException e) {
e.printStackTrace();
}
info = new DevInfo();
if(device < cache.size()){
String[] sinfo = cache.get(device).split(" |\t");
if(sinfo.length >= 5){
info.setLabel(sinfo[1]);
info.setMount_point(sinfo[2]);
info.setPart(sinfo[3]);
info.setSysfs_path(sinfo[4]);
}
}
return info;
}
/**
* init the words into the cache array
* @throws IOException
*/
private void initVoldFstabToCache() throws IOException {
cache.clear();
BufferedReader br = new BufferedReader(new FileReader(VOLD_FSTAB));
String tmp = null;
while ((tmp = br.readLine()) != null) {
// the words startsWith "dev_mount" are the SD info
if (tmp.startsWith(HEAD)) {
cache.add(tmp);
Log.v("xcl", tmp);
}
}
br.close();
cache.trimToSize();
}
public class DevInfo {
private String label, mount_point, part;
private String sysfs_path;
public String getLabel() {
return label;
}
private void setLabel(String label) {
this.label = label;
}
public String getMount_point() {
return mount_point;
}
private void setMount_point(String mount_point) {
this.mount_point = mount_point;
}
public String getPart() {
return part;
}
private void setPart(String part) {
this.part = part;
}
public String getSysfs_path() {
return sysfs_path;
}
private void setSysfs_path(String sysfs_path) {
this.sysfs_path = sysfs_path;
}
}
public DevInfo getInternalInfo() {
return getInfo(DEV_INTERNAL);
}
public DevInfo getExternalInfo() {
return getInfo(DEV_EXTERNAL);
}
public DevInfo getUSBInfo(){
return getInfo(DEV_USB);
}
}
interface IDev {
DevInfo getInternalInfo();
DevInfo getExternalInfo();
}
调用代码://获得各盘符路径
Dev_MountInfo dev = Dev_MountInfo.getInstance();
DevInfo info = dev.getInternalInfo();
this.diskInternal = info.getMount_point();
//Environment.getExternalStorageDirectory() 这两个要是不一样咋办
info = dev.getExternalInfo();
this.diskExternal = info.getMount_point();
info = dev.getUSBInfo();
this.diskUSB = info.getMount_point();
参考:http://blog.csdn.net/xubright/article/details/9832607
## - San Mehat ([email protected])
## #######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################## Example of a standard sdcard mount for the emulator / Dream
# Mounts the first usable partition of the specified device
#dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
#dev_mount flash /mnt/sdcard auto /devices/virtual/mtd/mtd9/mtdblock9dev_mount flash /mnt/sdcard auto /devices/virtual/mtd/mtd9/mtdblock9
dev_mount sdcard /mnt/external_sd auto /devices/platform/rk29_sdmmc.0/mmc_host/mmc0
dev_mount udisk /mnt/usb_storage auto /devices/platform/usb20_host/usb /devices/platform/usb20_otg/usb## Example of a dual card setup
# dev_mount left_sdcard /sdcard1 auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
# dev_mount right_sdcard /sdcard2 auto /devices/platform/goldfish_mmc.1 /devices/platform/msm_sdcc.3/mmc_host/mmc1## Example of specifying a specific partition for mounts
# dev_mount sdcard /sdcard 2 /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
这个是我的平板的vold.fstab内容,好吧我记错了,/mnt/sdcard代表的内置ROM /mnt/usb_storage是OTG连接的路径 /mnt/external_sd是外置SD卡