`

文件路径和Uri

 
阅读更多

转于:http://blog.csdn.net/kwongfung/article/details/8467442

 

--------------------------------------------------------------------------------------------

 

一、Uri 

     通用资源标志符(Universal Resource Identifier, 简称"URI")。

  Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。

  URI一般由三部分组成:

    访问资源的命名机制。 

    存放资源的主机名。 

    资源自身的名称,由路径表示。 

  Android的Uri由以下三部分组成: "content://"、数据的路径、标示ID(可选)

  举些例子,如: 

    所有联系人的Uri: content://contacts/people

    某个联系人的Uri: content://contacts/people/5

    所有图片Uri: content://media/external

    某个图片的Uri:content://media/external/images/media/4

二、内部保存

首先我们来看一下android是如何管理多媒体文件(音频、视频、图片)的信息。通过DDMS,我们在/data/data/com.android.providers.media下找到数据库文件

打开external.db文件进一步查看:在media表格下,可以看到文件路径(_data)和Uri的标示ID(_id)的对应关系。
            

三、相互转换

 1.从Uri获得文件路径

  1. string  myImageUrl = "content://media/external/images/media/***";  
  2. Uri uri = Uri.parse(myImageUrl);  
  3.   
  4.   
  5. String[] proj = { MediaStore.Images.Media.DATA };     
  6. Cursor actualimagecursor = this.ctx.managedQuery(uri,proj,null,null,null);    
  7. int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);     
  8. actualimagecursor.moveToFirst();     
  9.   
  10.   
  11. String img_path = actualimagecursor.getString(actual_image_column_index);    
  12. File file = new File(img_path);  
  13. Uri fileUri = Uri.fromFile(file);  

 2、从文件路径获得Uri

  1. Uri mUri = Uri.parse("content://media/external/images/media");   
  2. Uri mImageUri = null;  
  3.   
  4. Cursor cursor = managedQuery(  
  5.         MediaStore.Images.Media.EXTERNAL_CONTENT_URI, nullnull,  
  6.         null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);  
  7. cursor.moveToFirst();  
  8.   
  9. while (!cursor.isAfterLast()) {  
  10.     String data = cursor.getString(cursor  
  11.             .getColumnIndex(MediaStore.MediaColumns.DATA));  
  12.     if (picPath.equals(data)) {  
  13.         int ringtoneID = cursor.getInt(cursor  
  14.                 .getColumnIndex(MediaStore.MediaColumns._ID));  
  15.         mImageUri = Uri.withAppendedPath(mUri, ""  
  16.                 + ringtoneID);  
  17.         break;  
  18.     }  
  19.     cursor.moveToNext();  
  20. }  



 
分享到:
评论

相关推荐

    Android如何通过URI获取文件路径示例代码

    最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...

    android 根据uri获取真实路径

    在Android开发过程中,处理文件路径时经常需要将一个`Uri`转换成真实的文件路径。尤其是在处理用户通过文件选择器选取的图片或文件时,通常会得到一个`Uri`,而这个`Uri`并不直接对应我们熟悉的文件系统路径。本文将...

    android图片文件的路径地址与Uri的相互转换方法

    Android 图片文件的路径地址与 Uri 的相互转换方法 Android 开发中常遇到的问题之一是图片文件的路径地址与 Uri ...通过使用 ContentResolver 来转换图片文件的路径地址与 Uri,我们可以更方便地访问和操作图片文件。

    Android 文件管理器.zip

    6. 路径和URI:理解Android中的文件路径和URI,如何正确处理内部存储和外部存储。 7. 异步处理:使用AsyncTask、IntentService或现代的LiveData和Coroutines处理耗时操作,防止阻塞主线程。 这个压缩包是一个宝贵的...

    Android开发 8.0及以上调用相机/相册,并根据Uri获取图像绝对路径,并进行文件上传

    首先创建一个文件,用于保存拍照图像,然后根据不同系统版本获取Uri,传递给Intent,然后调起相机(可以考虑将outputImage、imageUri设置为全局变量)。 3、处理回调 使用BitmapFactory读取imageUri,得到bitmap,...

    uri-path:将相对文件系统路径转换为安全URI路径

    尿路 将相对文件系统路径转换为安全URI路径安装npm install --save uri-path用法var URIpath = require ( 'uri-path' ) ;// Properly encode URI path segmentsURIpath ( '../abc/@#$%¨&()[]{}-_=+ß/môòñ 月 ق...

    Android Uri和文件路径互相转换的实例代码

    * 专为Android4.4设计的从Uri获取文件绝对路径 */ public static String getPath(final Context context, final Uri uri) { final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION

    java文件与流操作code

    11. **文件路径和URI** - File类的getPath()方法返回文件的路径字符串,toURI()方法将其转换为URI对象,便于在网络中表示文件位置。 12. **文件操作异常** - 文件和流操作可能会抛出IOException,如...

    可重复使用文件保存

    5. **文件路径和URI**:在处理多个文件时,理解绝对路径、相对路径和统一资源标识符(URI)的概念至关重要,这有助于构建正确的文件引用。 6. **文件复制**:有时,我们可能需要创建文件的副本。Java的`Files.copy...

    C# 获得文件路径信息

    在本篇文章中,我们将深入探讨如何使用C#来获取和处理文件路径。 首先,C#提供了一个名为`System.IO`的命名空间,它包含了一系列用于处理文件和目录的类和方法。获取文件路径信息主要通过以下几种方式: 1. **使用...

    安卓获取文件路径到text的DEMO

    至此,我们已经完成了文件路径的获取和显示。这个DEMO对于学习安卓文件操作和权限管理具有很高的参考价值。它展示了如何使用系统服务,处理Intent,请求权限以及解析文件URI。同时,它还提醒我们,由于Android的不同...

    裁剪图片,通过imageView显示

    - Android 10 (API 29) 和更高版本引入了分区存储,处理文件路径和Uri时需要特别注意。可能需要使用`FileProvider`来创建安全的共享文件Uri,避免`Uri`被其他应用访问。 通过以上步骤,你可以在Android应用中实现...

    Java_file.rar_Work It

    4. **文件路径和URI**:理解相对和绝对路径的概念非常重要。`getPath()`、`getAbsolutePath()`和`toURI()`方法帮助处理这些路径和统一资源标识符。 5. **文件迭代器**:如果需要遍历目录下的所有文件,可以使用`...

    android文件路径详解

    在Android系统中,文件路径是应用管理数据、资源和配置文件的关键。理解Android中的文件路径对于开发者来说至关重要,因为这关系到如何正确地存储、读取和操作文件。本篇文章将深入探讨Android文件路径的各个方面。 ...

    C#114获得文件路径信息 源代码

    在.NET中,`Uri`类也可以用来处理和解析文件路径,特别是当涉及到URL或网络路径时。 此外,C#11引入了一些新的语言特性,虽然标题中提到的"C#114"可能是指一个具体情境,但在C#11中,我们可以使用`using`声明简化...

    Android MP3播放器源代码

    5. **文件路径和URI**:理解如何获取本地音乐文件的路径或URI,这通常涉及到Android的文件系统和ContentResolver。在获取到文件路径后,可以使用`MediaPlayer`的`setDataSource()`方法加载音乐。 6. **事件监听**:...

    播放存储卡里边的mps音乐

    2. **文件路径和URI**:首先,我们需要获取到MP3文件在存储卡上的具体路径,这通常是一个类似`/storage/emulated/0/Music/my_song.mps`的路径。在Android中,文件路径可以通过File对象表示,而用于播放的URI可以通过...

    Android中Uri和Path之间的转换的示例代码

    Android中Uri和Path之间的转换 原因 调用系统拍照应用,拍照后要保存图片,那么我们需要指定一个存储图片路径的Uri。这就涉及到如何将file path转换为Uri。有时候我们还需要根据照片的路径得到照片的media Uri,那么...

Global site tag (gtag.js) - Google Analytics