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> getSdcardStatus(Context context){
        ArrayList> 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                     HashMap 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;
    }
}

你可能感兴趣的:(Android手机获取当前是否安装有外置SD卡以及外置SD卡的状态是否挂载mounted)