通过 Uri 获取绝对路径

  • Android,uri,contentprovider,

在获取到一个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 -

本文链接 https://binkery.com/archives/68.html,欢迎转载,转载请注明出处。