在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中新增的标志也可以判断。
