项目新版发布前发现,原来写的选择读取媒体库文件抛异常了,查看资料发现4.4中调用Document Provider。

本地资源通过Document Provider选择后返回的URI如下:
content://com.android.providers.media.documents/document/image:12580

读取Document Provider的图片资源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
String wholeID = DocumentsContract.getDocumentId(uri);

//获得资源唯一ID
String id = wholeID.split(“:”)[1];
//定义索引字段
String[] column = { MediaStore.Images.Media.DATA };

//
String sel = MediaStore.Images.Media._ID + “=?”;

Cursor cursor = getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
column, sel, new String[]{ id }, null);

int columnIndex = cursor.getColumnIndex(column[0]);

if (cursor.moveToFirst()) {
//DATA字段就是本地资源的全路径
String filePath = cursor.getString(columnIndex);
}
//关闭游标
cursor.close();

其他的如Google Drive的内容没有处理。