Android手机获取当前是否安装有外置SD卡以及外置SD卡的状态是否挂载mounted

该工具类说明:获取手机存储设备如手机本身存储以及插入的外置SD卡存储信息,包括根路径,是否可以移除,以及是否为挂载状态,可根据是否可移除来判断是否是机身存储以及是否是插入的外置SD卡。

package com.dh.lenovo.mysdcrd;
import android.content.Context;
import android.os.storage.StorageManager;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;

public class IsHaveOtherSdcard {

    public ArrayList<HashMap<String,Object>> getSdcardStatus(Context context){
        ArrayList<HashMap<String,Object>> list = new ArrayList<>();
        StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
        try {
            Method method_volumeList = StorageManager.class.getMethod("getVolumeList");
            method_volumeList.setAccessible(true);
            Object[] volumeList = (Object[]) method_volumeList.invoke(storageManager);
            if(volumeList.length>=1){
                for(int i=0;i<volumeList.length;i++){
                    HashMap<String,Object> map = new HashMap<>();
                    //存储根路径
                    map.put("path", (String) volumeList[i].getClass().getMethod("getPath").invoke(volumeList[i]));
                    //存储挂载状态mounted为挂载状态
                    map.put("state",(String) volumeList[i].getClass().getMethod("getState").invoke(volumeList[i]));
                    //是否可移除,可移除表示外置Sd卡,不可移除表示手机机身存储
                    map.put("isRemovable",(boolean) volumeList[i].getClass().getMethod("isRemovable").invoke(volumeList[i]));
                    list.add(map);
                }
                return list;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值