通过Uri获取绝对路径

January 4, 2012

Android

在获取到一个Uri之后,需要通过它来获取该文件的绝对路径。

一开始碰到这个问题的时候,就打算从Uri着手,可惜这个类并没有提供我想要的这么一个方法,后来想想,它确实也不应该提供这么一个方法。

所以目前能想到的就是回到ContentProvider中去要数据了,进行一个query操作。不知道有没有更好的办法,我是认为这个操作还是成本比较大的,也许应该有更轻量级的代码可以使用。

就目前已知来说,Android的ContentProvider一般把绝对路径放在_data这个字段下面。

ContentResolver cr = this.getContentResolver();
String[] projection = new String[] { MediaStore.Audio.Media.DATA };
Cursor cursor = cr.query(uri, projection, null, null, null);
if(cursor == null || !cursor.moveToFirst()){
return;
}
int index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
String path = cursor.getString(index);
cursor.close();

--- EOF ---

添加新评论