转于: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获得文件路径
- string myImageUrl = "content://media/external/images/media/***";
- Uri uri = Uri.parse(myImageUrl);
- String[] proj = { MediaStore.Images.Media.DATA };
- Cursor actualimagecursor = this.ctx.managedQuery(uri,proj,null,null,null);
- int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
- actualimagecursor.moveToFirst();
- String img_path = actualimagecursor.getString(actual_image_column_index);
- File file = new File(img_path);
- Uri fileUri = Uri.fromFile(file);
2、从文件路径获得Uri
- Uri mUri = Uri.parse("content://media/external/images/media");
- Uri mImageUri = null;
- Cursor cursor = managedQuery(
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
- null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);
- cursor.moveToFirst();
- while (!cursor.isAfterLast()) {
- String data = cursor.getString(cursor
- .getColumnIndex(MediaStore.MediaColumns.DATA));
- if (picPath.equals(data)) {
- int ringtoneID = cursor.getInt(cursor
- .getColumnIndex(MediaStore.MediaColumns._ID));
- mImageUri = Uri.withAppendedPath(mUri, ""
- + ringtoneID);
- break;
- }
- cursor.moveToNext();
- }
相关推荐
最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...
在Android开发过程中,处理文件路径时经常需要将一个`Uri`转换成真实的文件路径。尤其是在处理用户通过文件选择器选取的图片或文件时,通常会得到一个`Uri`,而这个`Uri`并不直接对应我们熟悉的文件系统路径。本文将...
Android 图片文件的路径地址与 Uri 的相互转换方法 Android 开发中常遇到的问题之一是图片文件的路径地址与 Uri ...通过使用 ContentResolver 来转换图片文件的路径地址与 Uri,我们可以更方便地访问和操作图片文件。
6. 路径和URI:理解Android中的文件路径和URI,如何正确处理内部存储和外部存储。 7. 异步处理:使用AsyncTask、IntentService或现代的LiveData和Coroutines处理耗时操作,防止阻塞主线程。 这个压缩包是一个宝贵的...
首先创建一个文件,用于保存拍照图像,然后根据不同系统版本获取Uri,传递给Intent,然后调起相机(可以考虑将outputImage、imageUri设置为全局变量)。 3、处理回调 使用BitmapFactory读取imageUri,得到bitmap,...
尿路 将相对文件系统路径转换为安全URI路径安装npm install --save uri-path用法var URIpath = require ( 'uri-path' ) ;// Properly encode URI path segmentsURIpath ( '../abc/@#$%¨&()[]{}-_=+ß/môòñ 月 ق...
* 专为Android4.4设计的从Uri获取文件绝对路径 */ public static String getPath(final Context context, final Uri uri) { final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION
11. **文件路径和URI** - File类的getPath()方法返回文件的路径字符串,toURI()方法将其转换为URI对象,便于在网络中表示文件位置。 12. **文件操作异常** - 文件和流操作可能会抛出IOException,如...
5. **文件路径和URI**:在处理多个文件时,理解绝对路径、相对路径和统一资源标识符(URI)的概念至关重要,这有助于构建正确的文件引用。 6. **文件复制**:有时,我们可能需要创建文件的副本。Java的`Files.copy...
在本篇文章中,我们将深入探讨如何使用C#来获取和处理文件路径。 首先,C#提供了一个名为`System.IO`的命名空间,它包含了一系列用于处理文件和目录的类和方法。获取文件路径信息主要通过以下几种方式: 1. **使用...
至此,我们已经完成了文件路径的获取和显示。这个DEMO对于学习安卓文件操作和权限管理具有很高的参考价值。它展示了如何使用系统服务,处理Intent,请求权限以及解析文件URI。同时,它还提醒我们,由于Android的不同...
- Android 10 (API 29) 和更高版本引入了分区存储,处理文件路径和Uri时需要特别注意。可能需要使用`FileProvider`来创建安全的共享文件Uri,避免`Uri`被其他应用访问。 通过以上步骤,你可以在Android应用中实现...
4. **文件路径和URI**:理解相对和绝对路径的概念非常重要。`getPath()`、`getAbsolutePath()`和`toURI()`方法帮助处理这些路径和统一资源标识符。 5. **文件迭代器**:如果需要遍历目录下的所有文件,可以使用`...
在Android系统中,文件路径是应用管理数据、资源和配置文件的关键。理解Android中的文件路径对于开发者来说至关重要,因为这关系到如何正确地存储、读取和操作文件。本篇文章将深入探讨Android文件路径的各个方面。 ...
在.NET中,`Uri`类也可以用来处理和解析文件路径,特别是当涉及到URL或网络路径时。 此外,C#11引入了一些新的语言特性,虽然标题中提到的"C#114"可能是指一个具体情境,但在C#11中,我们可以使用`using`声明简化...
5. **文件路径和URI**:理解如何获取本地音乐文件的路径或URI,这通常涉及到Android的文件系统和ContentResolver。在获取到文件路径后,可以使用`MediaPlayer`的`setDataSource()`方法加载音乐。 6. **事件监听**:...
2. **文件路径和URI**:首先,我们需要获取到MP3文件在存储卡上的具体路径,这通常是一个类似`/storage/emulated/0/Music/my_song.mps`的路径。在Android中,文件路径可以通过File对象表示,而用于播放的URI可以通过...
Android中Uri和Path之间的转换 原因 调用系统拍照应用,拍照后要保存图片,那么我们需要指定一个存储图片路径的Uri。这就涉及到如何将file path转换为Uri。有时候我们还需要根据照片的路径得到照片的media Uri,那么...