zoukankan      html  css  js  c++  java
  • Android内置和外置SD卡的位置获取

    public class StorageUtils {
        private static String TAG="123";
    
        // 获取主存储卡路径 内置内存卡路径
        public static String getPrimaryStoragePath(Context context) {
            try {
    
                StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
                Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths");
                String[] paths = (String[]) getVolumePathsMethod.invoke(sm);
                // first element in paths[] is primary storage path
                return paths[0];
            } catch (Exception e) {
                Log.e(TAG, "getPrimaryStoragePath() failed", e);
            }
            return null;
        }
    
    
        //获取可用的所有外置内存卡路径
        public static List<String> getSecondaryStoragePath(Context context) {
            try {
                List<String> sdPaths=new ArrayList<>();
                StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
                Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths");
                String[] paths = (String[]) getVolumePathsMethod.invoke(sm);//获取所有sd卡路径
                if(paths.length>=1){
                    for (int i = 1; i <paths.length ; i++) {
                        if(getStorageState(context,paths[i])){
                            sdPaths.add(paths[i]);
                        }
                    }
                }
    
                return sdPaths;
            } catch (Exception e) {
                Log.e(TAG, "getSecondaryStoragePath() failed", e);
            }
            return null;
        }
    
        // 判断存储卡的路径是否可用
        public static boolean getStorageState(Context context,String path) {
            try {
                StorageManager sm = (StorageManager) context.getSystemService(context.STORAGE_SERVICE);
                Method getVolumeStateMethod = StorageManager.class.getMethod("getVolumeState", new Class[] {String.class});
                String state = (String) getVolumeStateMethod.invoke(sm, path);
                if(state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)||state.equals(Environment.MEDIA_MOUNTED)){
                    return true;
                }
                return false;
            } catch (Exception e) {
                Log.e(TAG, "getStorageState() failed", e);
                return false;
            }
        }
    
    
    
    
    }
    

      

  • 相关阅读:
    数据结构之堆排序
    数学之向量的点积(点乘、数量积)
    解决oracle11g数据库监听连接不上问题
    纯净版SSM
    maven打包mapper.xml打不进去问题
    servlet读取请求参数后流失效的问题
    Linux---centos7.0安装、配置
    5-- String 、StringBulid 、StringBuffer的区别
    02 | Java内存模型:看Java如何解决可见性和有序性问题
    01 | 可见性、原子性和有序性问题:并发编程Bug的源头
  • 原文地址:https://www.cnblogs.com/wangjiaghe/p/8418051.html
Copyright © 2011-2022 走看看