android 13.0 当卸载otg设备开机不加载otg设备功能实现

1.概述

在13.0定制化rom产品开发过程中,客户有功能需求,通过系统属性值控制是否加载挂载otg设备,当设置为卸载模式时,
要求不能挂载otg设备,开机也不能挂载otg设备,接下来分析相关功能实现

2.卸载otg设备开机不加载otg设备的核心代码

frameworks/base/services/core/java/com/android/server/StorageManagerService.java

3.卸载otg设备开机不加载otg设备的功能分析和实现

系统通过StorageManager类来检测U盘的插入和拔出事件。通过注册一个StorageEventListener监听器,我们可以在U盘插入事件发生时收到通知
Vold 全称为 Volume Daemon,用于管理外部存储设备的 Native daemon 进程,这是一个非常重要的守护进程,主要由 NetlinkManager,VolumeManager,
CommandListener 这 3 部分组成,当内核检测到文件系统的时候会通过 Vold 自动挂载它们
当一个外部存储设备插入的时候,kernel 会产生一个 uevent 事件,此事件会发送给 Native 层的Vold 模块。
Vold 为一个守护进程,其通过 socket 机制从 kernel 获取 uevent 事件,然后解析事件。
MountService 根据 Vold 解析出的相应状态去决定发出什么样的广播、给 Vold 作出什么样的反应。
最后 Vold 依据 MountService 的反应稍加处理交由 Kernel 处理
StorageManager是系统存储服务的接口。 存储管理器处理与存储相关的项目
实现思路:
1.StorageManage

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 07:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 07:16:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 07:16:03       82 阅读
  4. Python语言-面向对象

    2023-12-16 07:16:03       91 阅读

热门阅读

  1. 虾皮Shopee API接口获取商品图片列表

    2023-12-16 07:16:03       65 阅读
  2. register_chrdev函数使用

    2023-12-16 07:16:03       63 阅读
  3. 微信小程序 - 龙骨图集拆分

    2023-12-16 07:16:03       57 阅读
  4. uniapp微信小程序下载base64图片流或https图片

    2023-12-16 07:16:03       67 阅读
  5. RHCL8_Linux_ansible的使用

    2023-12-16 07:16:03       64 阅读
  6. vue与angular以及react的区别

    2023-12-16 07:16:03       49 阅读
  7. 浅谈“前端已死”论

    2023-12-16 07:16:03       55 阅读
  8. Vue双向数据绑定和小程序数据驱动有何异同?

    2023-12-16 07:16:03       59 阅读