Android 获取外部存储设备列表

本文介绍了Android系统中如何利用StorageManager动态获取不同芯片设备的外部存储设备挂载情况,如SD卡和U盘的路径。通过调用getVolumeList和getVolumePaths方法可以获取到系统的所有存储设备信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于不同芯片设备的外部存储设备不太统一,比如说外部sdcard,u盘等,他们的路径在不同芯片上面的定义是不一样的,所以我们需要动态的去获取机器当前的外部设备mount 的情况

Android 通过 StorageManager 类来管理存储设备的,这个类里面包含一些隐藏的方法:
getVolumeList —–> 返回StorageVolume 类型的数组,包含系统所有的存储设备volume
getVolumePaths—–> 返回String 类型的数组,包含系统所有存储设备的挂在路径

以下以getVolumeList 为例来获取系统所有的可插拔的设备

    priavte StorageManager mStorageManager;
    private Method getStorageVolumes;
    private Method getPath;
    mStorageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
        try {

            getStorageVolumes = mStorageManager.getClass().getMethod("getVolumeList");
            StorageVolume[] volumeList = (StorageVolume[]) getStorageVolumes.invoke(mStorageManager);
            if(volumeList != null){
                for(StorageVolume volume :volumeList){
                    if(volume.isRemovable() && volume.getState().equals("mounted")){
                        getPath = volume.getClass().getMethod("getPath");
                        Log.d("MainActivity", "getPath.invoke(volume.getClass()):" + getPath.invoke(volume));
                        String mountPoint = (String) getPath.invoke(volume);

                    }

                }
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值