我遇到的问题是U盘挂载成功了,storage/udisk节点也存在,通过串口能访问,但是应用不能读取。如果说日志中mountFlags=0说明你的问题跟我一样,正确的应该是mountFlags=VISIBLE。
type=PUBLIC diskId=disk:8,0 partGuid= mountFlags=0 mountUserId=0
state=UNMOUNTED
fsType=null fsUuid=null fsLabel=null
path=null internalPath=null
Android 8.0之前是通过MountService跟vold通信以及发送挂载广播等操作
frameworks/base/services/java/com/android/server/MountService.java
Android 8.0之后MountService代码整合进了StorageManagerService.java
发送挂载/卸载广播
case H_VOLUME_BROADCAST: {
final StorageVolume userVol = (StorageVolume) msg.obj;
final String envState = userVol.getState();
Slog.d(TAG, "Volume " + userVol.getId() + " broadcasting " + envState + " to "
+ userVol.getOwner());
final String action = VolumeInfo.getBroadcastForEnvironment(envState);
if (action != null) {
final Intent intent = new Intent(action,
Uri.fromFile(userVol.getPathFile()));
intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, userVol);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
| Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
mContext.sendBroadcastAsUser(intent, userVol.getOwner());
}
break;
}
修改如果是USB则设置VolumeInfo.MOUNT_FLAG_VISIBLE
参考博客:
https://blog.youkuaiyun.com/fuyinghaha/article/details/79127093