前言

AndroidVold层如何判断插入的是TF卡或者U盘等信息,这部分判断源码中有,当然也可以通过其他的方式进行判断,下面简单记录一下我常用的几种方式判断。

不一定有用哈。

正文

方法1

VolumeManager.cpp的handleBlockEvent()中磁盘挂载时有如下日志打印

case NetlinkEvent::Action::kAdd: {
    for (const auto& source : mDiskSources) {
        if (source->matches(eventPath)) {
            // For now, assume that MMC and virtio-blk (the latter is
            // specific to virtual platforms; see Utils.cpp for details)
            // devices are SD, and that everything else is USB
            int flags = source->getFlags();
            if (major == kMajorBlockMmc || IsVirtioBlkDevice(major)) {
                flags |= android::vold::Disk::Flags::kSd;
            } else {
                flags |= android::vold::Disk::Flags::kUsb;
            }
            auto disk =
                new android::vold::Disk(eventPath, device, source->getNickname(), flags);
            handleDiskAdded(std::shared_ptr<android::vold::Disk>(disk));
            break;
        }
    }
    break;
}

也就是上面就可以判断插入的是SD卡还是U盘了。

source->getNickname()这里也会有对应的昵称,通过这个传入即可
flags中新增的标志也可以判断。

隐藏内容!
付费阅读后才能查看!
3
4
多个隐藏块只需支付一次

参考文章

1.《Android源码》

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...