博主信息
博文 143
粉丝 1
评论 0
访问量 425387
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
获取U盘的挂载路径,直接读写U盘(就像挂载sdcard读写文件)
弘德誉曦的博客
原创
2959人浏览过

对于U盘的文件系统,只依赖于手机系统是否支持,无需我们做额外工作(所有Android手机都支持FAT32,有个别手机还支持NTFS) 但是有些手机无法获取挂载路径(如小米等,就算通过mount命令找到挂载路径也没有权限读写),所以该方法通用性其实不如方法一!

1.通过MEDIA广播获取挂载路径

// 注册系统广播
<receiver android:name=".MediaReceiver">
	<intent-filter>
		<action android:name="android.intent.action.MEDIA_CHECKING" />
		<action android:name="android.intent.action.MEDIA_MOUNTED" />
		<action android:name="android.intent.action.MEDIA_EJECT" />
		<action android:name="android.intent.action.MEDIA_UNMOUNTED" />

		<data android:scheme="file" />
	</intent-filter>
</receiver>

// 获取USB挂载路径
public class MediaReceiver extends BroadcastReceiver {		
	@Override
	public void onReceive(Context context, Intent intent) {
		switch (intent.getAction()) {
			case Intent.ACTION_MEDIA_CHECKING:
				break;
			case Intent.ACTION_MEDIA_MOUNTED:
				// 获取挂载路径, 读取U盘文件
				Uri uri = intent.getData();
				if (uri != null) {
					String filePath = uri.getPath();
					File rootFile = new File(filePath);
					for (File file : rootFile.listFiles()) {
						// 文件列表...
					}
				}
				break;
			case Intent.ACTION_MEDIA_EJECT:
				break;
			case Intent.ACTION_MEDIA_UNMOUNTED:
				break;
		}
	}
}

2.通过反射系统方法获取挂载路径

public static List<String> getUsbPaths(Context cxt) {
	List<String> usbPaths = new ArrayList<>();
	try {
		StorageManager srgMgr = (StorageManager) cxt.getSystemService(Context.STORAGE_SERVICE);
		Class<StorageManager> srgMgrClass = StorageManager.class;
		String[] paths = (String[]) srgMgrClass.getMethod("getVolumePaths").invoke(srgMgr);
		for (String path : paths) {
			Object volumeState = srgMgrClass.getMethod("getVolumeState", String.class).invoke(srgMgr, path);
			if (!path.contains("emulated") && Environment.MEDIA_MOUNTED.equals(volumeState))
				usbPaths.add(path);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return usbPaths;
}


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学