Android获取手机内存与SD卡的根目录
直接贴出代码,有需要的可以直接变成工具类使用。优先读取sd卡假设没有sd卡再去手机内存中获取。记得动态配置读写权限!
/*** 优先在SD卡,其次是内部存储*/public static String getRWPath(Context context) {String rwPath = null;String storagePath = getStoragePath(context, true);if (null != storagePath) {rwPath = storagePath;} else {String sdPath = getSDPath();rwPath = sdPath;}return rwPath;}
/*** @description 获取SD卡路径,不用在设置中这是默认存储位置*/public static String getStoragePath(Context mContext, boolean is_removale) {StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);Class> storageVolumeClazz = null;try {storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");Method getPath = storageVolumeClazz.getMethod("getPath");Method isRemovable = storageVolumeClazz.getMethod("isRemovable");Object result = getVolumeList.invoke(mStorageManager);final int length = Array.getLength(result);for (int i = 0; i < length; i++) {Object storageVolumeElement = Array.get(result, i);String path = (String) getPath.invoke(storageVolumeElement);boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);if (is_removale == removable) {return path;}}} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {e.printStackTrace();}return null;}
/*** 获取SD卡路径** @return*/public static String getSDPath() {String sdPath = null;// 判断sd卡是否存在boolean sdCardExit = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);if (sdCardExit) {// 获取根目录sdPath = Environment.getExternalStorageDirectory().toString();}return sdPath;}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
