Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习

  一、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, null, null,
 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             }

http://www.cnblogs.com/lingyun1120/archive/2012/04/18/2455212.html

Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习,布布扣,bubuko.com

时间: 2025-01-14 18:31:10

Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习的相关文章

【转】Pro Android学习笔记(五):了解Content Provider(上)

Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider进行读写,需要使用URI.推荐阅读Android学习笔记(四七):Content Provider初谈和Android联系人信息.Android学习笔记(四八):提供自己的Content Provider和Android学习笔记(四九):通过Content Provider访问数据.Content

Linux 程序设计学习笔记----文件管理系统

本文部分整理自网络 Linux下文件系统管理 1.VFS文件系统概述 linux采用VFS来管理文件系统,而且linux设计的原则之一就是everything is file.因此文件管理系统是linux设计最核心的体现. VFS的全称是Virtual File System (虚拟文件系统). 总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,

.net学习笔记--文件读写的几种方式

在.net中有很多有用的类库来读写硬盘上的文件 一般比较常用的有: File:1.什么时候使用:当读写件大小不大,同时可以一次性进行读写操作的时候使用         2.不同的方式可以读写文件类型不一样. ReadAllBytes()  WriteAllByte():可以读写任意类型的文件 (里面封装的是FileStream)           ReadAllLines()  ReadAllText():(里面封装是StreamWriter,StreamReader),只能读写文本类型文件

EasyARM i.mx28学习笔记——文件IO方式操作GPIO

0 前言 本文描述如果通过文件IO sysfs方式控制EasyARM GPIO端口.通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入. Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来. [相关博文] [EasyARM

android 系统log文件路径

手机的默认的日志目录: /data/local/tmp/* /data/tmp/* /data/system/usagestats/* /data/system/appusagestates/* /data/system/dropbox/* /data/tombstones/* /data/anr/* logcat的日志在 /dev/log/main 有/data/local/log目录的,可以保存3-4天的log. android 系统log文件路径

Android学习笔记之数据的Sdcard存储方法及操作sdcard的工具类

FileService.java也就是操作sdcard的工具类: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

PHP学习笔记-文件操作1

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52294237 本文出自:[顾林海的博客] 前言 PHP支持文件上传功能,因此学习PHP文件的相关操作是必须的,这篇笔记会去记录PHP文件系统的相关知识. 文件打开与关闭 文件处理包括读取.关闭.重写等,例如,访问一个文件需要3步:打开文件.读写文件和关闭文件.其他的操作要么是包含在读写文件中(如显示内容.写入内容等),要么与文件自身的属性有关系(如文件遍历.文件改名等

Android学习笔记(四九):通过Content Provider访问数据

在上次笔记中,我们编写了自己的Provider,这次笔记,我们将通过Content Provider的Uri接口对数据进行访问,重写Android学习笔记(四二)中例子.在这里我们不在充分描述相关UI如何编写,可以到笔记(四二)中详细查看,重点讲述如何实现数据的访问. 读取信息 读取信息方式,在笔记(四七)中已经介绍,代码如下 private voidread(){     /* 通过managedQuery读取,第1参数表示URI, 第2参数表示所需读取的信息,第3个参数是限制条件,类似SQL