Android 通过 URI 获取文件路径示例代码 在 Android 开发中,获取文件路径是非常重要的一步,特别是在拍照、选择图片、上传文件等操作中。通过 URI 获取文件路径可以实现文件的上传、下载、分享等功能。但是,在 Android 不同版本中,URI 的获取方式也不同。在 Android 4.4 及以上的手机上,使用了 DocumentUri 来代表获取到文件的 URI,需要对其进行适配。 一、URI 介绍 URI(Uniform Resource Identifier,统一资源标识符)是一种用于标识网络资源的字符串。URI 由三部分组成:scheme、authority 和 path。scheme 是 URI 的协议部分,authority 是 URI 的认证部分,path 是 URI 的路径部分。在 Android 中,URI 广泛应用于文件、图片、视频等资源的标识。 二、通过 URI 获取文件路径 在 Android 中,通过 URI 获取文件路径可以使用 ContentResolver 来实现。需要使用 Intent.ACTION_GET_CONTENT 来启动选择图片的 Activity,获取到 URI,然后使用 ContentResolver.query() 方法来查询文件路径。 ```java Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent, FILE_CHOOSER_RESULT_CODE); // 在 onActivityResult 中获取到 URI Uri uri = data.getData(); String path = null; if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); if (columnIndex > -1) { path = cursor.getString(columnIndex); } } cursor.close(); } return path; } ``` 三、适配 Android 4.4 及以上的手机 在 Android 4.4 及以上的手机上,使用了 DocumentUri 来代表获取到文件的 URI。因此,需要对其进行适配。 ```java if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { if (DocumentsContract.isDocumentUri(context, uri)) { if (isExternalStorageDocument(uri)) { // ExternalStorageProvider final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; if ("primary".equalsIgnoreCase(type)) { path = Environment.getExternalStorageDirectory() + "/" + split[1]; return path; } } else if (isDownloadsDocument(uri)) { // DownloadsProvider final String id = DocumentsContract.getDocumentId(uri); final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.parseLong(id)); return getDataColumn(context, contentUri, null, null); } } } ``` 四、结论 通过 URI 获取文件路径是 Android 开发中非常重要的一步。需要根据不同的 Android 版本来选择不同的获取方式。同时,需要对 Android 4.4 及以上的手机进行适配,以确保文件路径的正确获取。
- 粉丝: 7
- 资源: 945
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 小说网站-JAVA-基于springBoot“西贝”小说网站的设计与实现
- 游戏分享网站-JAVA-基于springBoot“腾达”游戏分享网站的设计与实现
- 学习交流-JAVA-基于springBoot“非学勿扰”学习交流平台设计与实现
- EDAfloorplanning
- 所有课程均提供 Python 复习部分.zip
- 所有算法均在 Python 3 中实现,是 hacktoberfest2020 的一个项目 - 没有针对 hacktoberfest 2021 的问题或 PR.zip
- OpenCV的用户手册资源.zip
- 用springmvc实现的校园选课管理系统
- 我的所有 Python 代码都存储在这个文件夹中 .zip
- 以下是关于毕业设计项目开发的详细资源.docx