package com.lody.virtual.helper.compat; import android.app.Activity; import android.content.Context; import android.os.Environment; import android.os.storage.StorageManager; import java.lang.reflect.Method; import java.util.ArrayList; public class StorageManagerCompat { private StorageManagerCompat() { } public static String[] getAllPoints(Context context) { StorageManager manager = (StorageManager) context.getSystemService(Activity.STORAGE_SERVICE); String[] points = null; try { Method method = manager.getClass().getMethod("getVolumePaths"); points = (String[]) method.invoke(manager); } catch (Exception e) { e.printStackTrace(); } return points; } public static boolean isMounted(Context context, String point) { if (point == null) return false; StorageManager manager = (StorageManager) context.getSystemService(Activity.STORAGE_SERVICE); try { Method method = manager.getClass().getMethod("getVolumeState", String.class); String state = (String) method.invoke(manager, point); return Environment.MEDIA_MOUNTED.equals(state); } catch (Exception e) { e.printStackTrace(); } return false; } public static ArrayList<String> getMountedPoints(Context context) { StorageManager manager = (StorageManager) context.getSystemService(Activity.STORAGE_SERVICE); ArrayList<String> mountedPoints = new ArrayList<String>(); try { Method getVolumePaths = manager.getClass().getMethod("getVolumePaths"); String[] points = (String[]) getVolumePaths.invoke(manager); if (points != null && points.length > 0) { Method getVolumeState = manager.getClass().getMethod("getVolumeState", String.class); for (String point : points) { String state = (String) getVolumeState.invoke(manager, point); if (Environment.MEDIA_MOUNTED.equals(state)) mountedPoints.add(point); } return mountedPoints; } } catch (Exception e) { e.printStackTrace(); } return null; } }