android apk获取设备外部存储路径

   日期:2020-07-13     浏览:98    评论:0    
核心提示:usb 和 sdcard 存储路径原本原厂获取路径逻辑是通过系统属性获取。sdcard_path = System.getenv(“SECOND_VOLUME_STORAGE”);usb_path= System.getenv(“THIRD_VOLUME_STORAGE”);打印出来是null,就用apk获取设备存储路径的方式1.引用// An highlighted blockimport java.lang.reflect.*;2.调用// An highlighted blo

usb 和 sdcard 存储路径
原本原厂获取路径逻辑是通过系统属性获取。
sdcard_path = System.getenv(“SECOND_VOLUME_STORAGE”);
usb_path= System.getenv(“THIRD_VOLUME_STORAGE”);
打印出来是null,就用apk获取设备存储路径的方式
1.引用

// An highlighted block
import java.lang.reflect.*;

2.调用

// An highlighted block
sdcard_path = getStoragePath(FirstRun.this,"SD 卡");
usb_path = getStoragePath(FirstRun.this,"U 盘");

3.实现逻辑

// An highlighted block
	public static String getStoragePath(Context context,String key) {
		String targetpath = "";
		StorageManager mStorageManager = (StorageManager) context
				.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");
			Object result = getVolumeList.invoke(mStorageManager);
			final int length = Array.getLength(result);
			Method getUserLabel = storageVolumeClazz.getMethod("getUserLabel");
			for (int i = 0; i < length; i++) {
				Object storageVolumeElement = Array.get(result, i);
				String userLabel = (String) getUserLabel.invoke(storageVolumeElement);
				String path = (String) getPath.invoke(storageVolumeElement);
				if(userLabel.contains(key)){
					targetpath= path;
				}
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		return targetpath;
	}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服