在做物联网客户需求时,有客户要求实现u盘中的文件在文件管理器中显示,便于客户管理。
查看代码后,发现u盘是基于usb-otg挂载的,只要实现usb-otg文件显示在文件管理器中即可。
android 6.0后usb otg设备不显示在文件管理器中
原因是android对usb otg设备做了一些限制。
可以在settings - storage 中去访问得到。 但是对于很多用户反馈操作很不便。.
可以做如下修改:
framework mountservice.java中,onVolumeCreatedLocked方法中,
//if (vol.disk.isAdoptable() || vol.isPhoneStorage()) {
if (vol.disk.isAdoptable() || vol.isPhoneStorage()||vol.isUSBOTG()) {
vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;
}
把usb otg设备volumeinfo 设置成visable 。
android 8.0 中将MountService类更改为StorageManagerService,并移除了DiskInfo中判断是否是手机存储和是否为USBOTG存储的方法。
8.0以前在frameworks/base/services/core/java/android/os/storage/DiskInfo.java中添加判断是否是手机存储的方法:isPhoneStorage:
public static boolean isPhoneStorage(String diskId) {
boolean result =