Advertisement

Android中通过Uri获取文件真实路径并转换为File的实现方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍了在Android开发中如何利用URI获取文件的真实路径,并将其转化为File对象的方法。适合需要处理文件存储和访问问题的开发者阅读。 本段落实例讲述了在Android中实现通过Uri获取真实路径并转换为File的方法。分享给大家参考。具体方法如下:首先使用`data.getData()` 获取 Uri 对象;然后定义一个字符串数组 `proj`,其中包含用于查询图片数据的字段名 `MediaStore.Images.Media.DATA`;接着调用 `managedQuery(uri, proj, null, null, null)` 方法获取 Cursor 对象,并通过该对象找到对应列索引值。具体代码如下: ```java Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor = managedQuery(uri, proj, null, null, null); int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); ``` 以上步骤实现了从 Uri 转换为 File 的基本过程。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • AndroidUriFile
    优质
    本文介绍了在Android开发中如何利用URI获取文件的真实路径,并将其转化为File对象的方法。适合需要处理文件存储和访问问题的开发者阅读。 本段落实例讲述了在Android中实现通过Uri获取真实路径并转换为File的方法。分享给大家参考。具体方法如下:首先使用`data.getData()` 获取 Uri 对象;然后定义一个字符串数组 `proj`,其中包含用于查询图片数据的字段名 `MediaStore.Images.Media.DATA`;接着调用 `managedQuery(uri, proj, null, null, null)` 方法获取 Cursor 对象,并通过该对象找到对应列索引值。具体代码如下: ```java Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor = managedQuery(uri, proj, null, null, null); int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); ``` 以上步骤实现了从 Uri 转换为 File 的基本过程。
  • Android URI
    优质
    本文介绍了在Android开发中如何通过URI获取文件的实际路径的方法和技巧,帮助开发者解决相关问题。 Android 根据URI 获取真实路径的方法如下:首先通过ContentResolver对象解析Uri获取文件的输入流;然后使用FileInputStream将输入流转换为本地文件或内存中的字节数组,从而得到文件的真实路径。具体实现时需要处理各种可能的异常情况,并确保应用具有读取外部存储器等必要的权限设置。 在某些情况下,还可以通过MediaStore API来查询获取Uri对应的图片、视频或者音频文件的实际位置信息。这通常涉及到对数据库表结构的理解和SQL语句的应用能力。 以上方法可以帮助开发者灵活地处理从URI到实际路径的转换需求,在不同的Android版本中可能需要进行适当的兼容性调整以确保功能正常运行。
  • 利用FileAndroid信息
    优质
    本文介绍了如何使用Java中的File类,在Android开发环境中通过指定文件路径来获取文件的各种属性和信息。 如何通过文件路径在Android系统中获取文件的相关信息,比如文件名称、大小、创建时间以及相对路径和绝对路径?
  • Android图片Uri之间
    优质
    本文介绍了在Android开发中如何将图片文件路径转换为Uri以及如何通过Uri获取到文件路径的方法和实现代码。适合初学者参考学习。 下面为大家介绍如何在Android系统中进行图片文件路径地址与Uri之间的相互转换的方法。我觉得这方面的内容非常实用,现在分享给大家参考使用。一起看看吧。
  • Android 7.0Uri
    优质
    本文介绍了如何在Android 7.0系统中获取文件Uri的具体方法,帮助开发者解决因权限变更导致的问题。 本段落主要介绍了在Android 7.0系统上获取文件Uri的方法,并分享了相关的实现细节和技术要点。希望对读者有所帮助。
  • Android图片地址与Uri之间
    优质
    本文介绍了在Android开发中将图片文件路径转化为Uri以及从Uri获取到文件路径的方法和相关代码示例。 在Android开发过程中,图片文件的路径地址与Uri是两种常见的表示方式。其中,Uri是一种统一资源标识符,用于跨应用共享数据;而路径地址则代表了文件系统中的具体位置。 ### 从Uri获取文件路径 当使用`ContentResolver`处理时,首先需要判断给定的`uri`类型: - 如果该uri为null或其scheme为空,则直接通过调用`getPath()`方法来获得对应的文件路径。 - 若uri的scheme是file(即File Uri),则同样可以通过调用`getPath()`获取到相应的本地文件地址。 - 对于Content Uri,需要使用`ContentResolver.query()`查询出对应的数据列,并从该Cursor中提取数据字段值作为实际文件路径。 示例代码如下: ```java public static String getRealFilePath(Context context, Uri uri) { if (uri == null) return null; final String scheme = uri.getScheme(); String data = null; // 如果scheme为空或者为file,则直接获取path if (null == scheme || ContentResolver.SCHEME_FILE.equals(scheme)) data = uri.getPath(); else if(ContentResolver.SCHEME_CONTENT.equals(scheme)) { Cursor cursor = context.getContentResolver().query(uri, new String[]{ImageColumns.DATA}, null, null, null); // 查询成功,获取cursor中的文件路径 if (cursor != null) { int index = 0; if(cursor.moveToFirst()) { index = cursor.getColumnIndex(ImageColumns.DATA); if(index > -1) data = cursor.getString(index); } cursor.close(); } } return data; // 返回文件路径 } ``` ### 文件路径转换成Uri 当已知图片的本地存储地址时,可以通过以下步骤获取到对应的`Content Uri`: - 首先判断该path是否为有效的图片类型。 - 对于有效类型的文件,则利用MediaStore中的相关方法构建出一个指向外部存储器中对应位置的uri。 示例代码如下: ```java private Uri filePathToUri(Context context, String path) { if (path != null) { // 创建File对象,然后转换成file uri Uri uri = Uri.fromFile(new File(path)); // 判断是否为内容类型uri,并且路径包含图片相关数据时执行额外处理逻辑。 if(uri.getScheme().equals(ContentResolver.SCHEME_FILE) && path.contains(image)) { ContentResolver cr = context.getContentResolver(); StringBuffer buff = new StringBuffer(); // 构造查询条件 buff.append(Images.ImageColumns.DATA).append(=) .append(path); Cursor cur = cr.query( Images.Media.EXTERNAL_CONTENT_URI, new String[]{ImageColumns._ID}, buff.toString(), null, null); int index = 0; // 遍历Cursor,查找符合条件的记录 for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) { index = cur.getColumnIndex(Images.ImageColumns._ID); if(index > -1) index = cur.getInt(index); } // 如果index为0,则说明没有匹配到任何数据;否则,根据索引构造出content uri return (index == 0) ? null : Uri.parse(content://media/external/images/media/ + index); } return uri; } return null; } ``` 在实际操作中,请注意权限管理。自Android6.0(API级别23)起,访问外部存储需要动态请求`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限;对于Content Uri的获取,则可能还需要特定的读取或写入权限。 理解并掌握这些转换方法对处理图片及其他文件在Android应用中的操作至关重要。
  • AndroidUri相互示例代码
    优质
    本篇教程提供了一个详细的示例代码,演示如何在Android开发中实现Uri和文件路径之间的相互转换。 在项目开发过程中需要将Uri转换为绝对路径。下面分享Android Uri与文件路径互相转换的实例代码,有需求的朋友可以参考一下。
  • Android 7.0及以上版本Uri(已验证)
    优质
    本文详细介绍在Android 7.0及以上版本中将Uri转换为文件路径的具体方法,并提供经验证的代码示例。适合开发者参考学习。 本段落主要介绍了Android 7.0及以上版本中Uri转路径的方法实现,并通过示例代码进行了详细的讲解。内容对于学习或工作中遇到相关问题的朋友具有一定的参考价值。希望需要了解这方面知识的读者能够从文中获得帮助,进一步掌握这一技术点。
  • Handle
    优质
    本文章介绍了如何使用Handle(句柄)来获取Windows系统中文件的确切路径。详细步骤和代码示例帮助读者解决相关编程问题。 文件的Handle可以用来获取文件路径,这里提供了一些源代码供参考。
  • Android相册图片及
    优质
    本文介绍了如何在Android应用开发中获取用户相册中的图片及其存储路径的具体方法和代码实现。 在Android开发中获取相册图片的方法有很多。这里介绍一种适用于Android 4.4及以上版本的方式,因为随着系统版本的更新,一些旧API会被弃用,并且新老API不兼容可能会导致问题出现。例如:managedQuery()方法已经被getContentResolver().query()替代了,但参数保持一致;在Android 4.4之后,Intent(Intent.ACTION_GET_CONTENT)和Intent(Intent.ACTION_OPEN_DOCUMENT)两个方法获取的图片URI不同,使用旧的方法可能无法在Android 4.4系统上正常工作。