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());

相关推荐
天天爱吃肉821818 分钟前
新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
android·python·嵌入式硬件·汽车
快乐觉主吖1 小时前
Unity的日志管理类
android·unity·游戏引擎
明月看潮生1 小时前
青少年编程与数学 01-011 系统软件简介 06 Android操作系统
android·青少年编程·操作系统·系统软件·编程与数学
snetlogon201 小时前
JDK17 Http Request 异步处理 源码刨析
android·网络协议·http
消失的旧时光-19432 小时前
Android USB 通信开发
android·java
吃汉堡吃到饱2 小时前
【Android】浅析View.post()
android
咕噜企业签名分发-淼淼2 小时前
开发源码搭建一码双端应用分发平台教程:逐步分析注意事项
android·ios
betazhou3 小时前
mariadb5.5.56在centos7.6环境安装
android·数据库·adb·mariadb·msyql
doublelixin9 小时前
AOSP (Android11) 集成Google GMS三件套
android
xzkyd outpaper12 小时前
onSaveInstanceState() 和 ViewModel 在数据保存能力差异
android·计算机八股