android文件管理器u盘,Android U盘文件显示在文件管理器

在做物联网客户需求时,有客户要求实现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 = false;

if (diskId != null) {

boolean isEMMCProject = SystemProperties.get(“ro.mtk_emmc_support”).equals(“1”);

if (isEMMCProject) {

if (diskId.equals(“disk:179,0”)) {

result = true;

}

} else {

if (diskId.equals(“disk:7,1”)) {

result = true;

}

}

}

return result;

}

在frameworks/base/core/java/android/os/storage/VolumeInfo.java中添加对USBOTG的判断,并调用DiskInfo中的isPhoneStorage方法:

public boolean isUSBOTG() {

String diskID = getDiskId();

if (diskID != null) {

// for usb otg, the disk id same as disk:8:x

String[] idSplit = diskID.split("?;

if (idSplit != null && idSplit.length == 2) {

if (idSplit[1].startsWith(“8,”)) {

Log.d(“chengqian”, “this is a usb otg”);

return true;

}

}

}

return false;

}

/**

check if this volume is phone storage

eMMC storage diskid is “disk:179,0”

NAND storage diskid is “disk:7,1”

*/

public boolean isPhoneStorage() {

return DiskInfo.isPhoneStorage(getDiskId());

}

在frameworks/base/services/core/java/com/android/server/StorageManagerService.java中的onVolumeCreatedLocked方法中:

//if(vol.dis.isAdoptable()){

if (vol.disk.isAdoptable()||vol.isPhoneStorage()||vol.isUSBOTG()) {

vol.mountFlags |= VolumeInfo.MOUNT_FLAG_VISIBLE;

Log.d(“chengqian”,“otg setting visible”);

}

将USB OTG 设备volumeinfo 设置成visable。

目前android O平台的DsikInfo中提供了isUsb方法,添加判断到StorageManagerService中isAdoptable中即可在文件管理器中查看USBOTG设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值