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

相关推荐
alexhilton8 小时前
Compose中的CameraX二维码扫描器
android·kotlin·android jetpack
eric*168810 小时前
Android15 enableEdgeToEdge 全面屏沉浸式体验
android·edgetoedge
小智社群12 小时前
小米安卓真机ADB对硬件操作
android·adb
嗷o嗷o12 小时前
Android BLE 为什么连上了却收不到数据
android
pengyu12 小时前
【Kotlin 协程修仙录 · 炼气境 · 后阶】 | 划定疆域:CoroutineScope 与 Android 生命周期的绑定艺术
android·kotlin
朝星12 小时前
Android开发[5]:组件化之路由+注解
android·kotlin
随遇丿而安12 小时前
Android全功能终极创作
android
随遇丿而安12 小时前
第1周:别小看 `TextView`,它其实是 Android 页面里最常被低估的组件
android
summerkissyou198716 小时前
Android-基础-SystemClock.elapsedRealtime和System.currentTimeMillis区别
android
ian4u16 小时前
车载 Android C++ 完整技能路线:从基础到进阶
android·开发语言·c++