1、点击local disk device的时候,刚好传过来的index=0;接着在 update top data的时候点击index=0返回;
大概的过程是:点击了local disk decive之后,触发了按键响应,然后获取到了index,之后然后handler到主线程进行刷新显示内容,然后因为加了标志,这里还要返回
到上一层,所以又逻辑控制点击了进入到devices页面的index=0的back键,所以此时又brower back键了,然后又handler通知主线程top data browser,
然后是handler通知update top data ,在browser某data时打开progressBar,然后在update某data时关闭progressBar。
2、在update top data不像我在update local data时,clickbtn设置为0放在click前面而是后面,主要是因为描绘切换时候的前进的那一页:在这里为显示usb devices的数量,是不大可能超过10个的,所以不论是拿list或者grid描绘都不会错,关键就是根据最后的flag标志来显示正确的view来显示数据即可
3、获取Android存储设备列表
this.storageManager = (StorageManager) activity.getApplicationContext()
.getSystemService(Context.STORAGE_SERVICE);
StorageVolume[] volumes = storageManager.getVolumeList();
// At present there is no any disk mount
if (volumes == null || volumes.length == 0) {
return;
}
String path = "";
// List all your mount disk
for (StorageVolume item : volumes) {
path = item.getPath();
String state = storageManager.getVolumeState(path);
// Mount is not successful
if (state == null || !state.equals(Environment.MEDIA_MOUNTED)) {
continue;
// Successful mount
} else {
BaseData bd = new BaseData(Constants.FILE_TYPE_DIR);
// bd.setName(storageManager.getVolumeLabel(path));
String name = path.substring(path.lastIndexOf("/") + 1,
path.length());
bd.setName(name);
bd.setPath(path);
deviceList.add(bd);
}
}
getVolumeList本身应该是一个隐藏了的方法的,所以这里调用,应该在源码做了变动(没办法,我们自己改源码,就是这么粗暴)
state是用来判断有没有mount成功
4、根目录怎么获取?
this.currentDirectory = Tools.getUSBMountedPath();
public static String getUSBMountedPath() {
return Environment.getExternalStorageDirectory().getParent();
}
5、建立一个公共类,保存扫描下来的数据,分集合、排好序,放好。等候使用