code: 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;
      }
  }