通过 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 -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 通过 Uri 获取绝对路径
本文地址: https://binkery.com/archives/68.html