android 检测u盘和sdcard

//方法一 android10 或者一下的应该可以使用 getVolumes()

int sdCardNum = 0;

int usbDiskNum = 0;

StorageManager mStorageManager = getSystemService(StorageManager.class);

List<VolumeInfo> volumes = mStorageManager.getVolumes();

//Collections.sort(volumes, VolumeInfo.getDescriptionComparator());

for (VolumeInfo vol : volumes) {

if (vol != null) {

DiskInfo disk = vol.getDisk();

if (disk.isSd()) {

sdCardNum++;

}else if(disk.isUsb()){

usbDiskNum++;

}

}

}

//另外不能直接调用getVolumes , 只通过invoke getVolumes 获取得到 List<VolumeInfo>

StorageManager mStorageManager = getSystemService(StorageManager.class);

Class<?> volumeInfoClazz;

Class<?> diskInfoClaszz;

try {

volumeInfoClazz = Class.forName("android.os.storage.VolumeInfo");

Method StorageManager_getVolumes = Class.forName("android.os.storage.StorageManager")

.getMethod("getVolumes");

int sdCardNum = 0;

int usbDiskNum = 0;

List<VolumeInfo> volumeInfos = (List<VolumeInfo>) StorageManager_getVolumes

.invoke(mStorageManager);

for(VolumeInfo volumeInfo: volumeInfos){

DiskInfo diskInfo = volumeInfo.getDisk();

if(diskInfo!=null) {

boolean isSD = diskInfo.isSd();

boolean isUSB = diskInfo.isUsb();

if (isSD) {

sdCardNum++;

}

if(isUSB){

usbDiskNum++;

}

}

}

Log.d("usb","find sdcard:"+sdCardNum);

Log.d("usb","find u-disk:"+usbDiskNum);

}catch (Exception e){

e.printStackTrace();

}

//以上获取的usb u盘数量会在 拔出u盘时不对应,所以可以使用一下方式

//准确获取u盘插入的个数和信息

UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);

HashMap<String, UsbDevice> devicelist = usbManager.getDeviceList();

Log.d("usb","u-diask count:"+devicelist.size());

相关推荐
走在路上的菜鸟9 小时前
Android学Dart学习笔记第二十一节 类-点的简写
android·笔记·学习·flutter
QQ12958455049 小时前
ThingsBoard-修改Android APP应用程序名和描述
android·物联网·iot
代码代码快快显灵9 小时前
Android项目架构深度解析
android
丐中丐99910 小时前
一个Binder通信中的多线程同步问题
android
诸神黄昏EX10 小时前
Android Qualcomm USB 专题系列【篇二:UsbGadget模式配置】
android
vocal10 小时前
【我的AOSP第一课】Android Init 语言与 rc 文件
android
诸神黄昏EX10 小时前
Android Qualcomm USB 专题系列【总篇:USB HAL架构】
android·linux·网络
原神启动110 小时前
Ansible(三)—— 使用Ansible自动化部署LNMP环境
android·自动化·ansible
前端老白11 小时前
webview在微信小程序中,安卓加载失败,IOS正常加载
android·ios·微信小程序·webview
2501_9371549311 小时前
适配中兴主流机型 纯净版刷机固件技术优势合集
android·源码·源代码管理·机顶盒