通过Uri得到实际路径,网上方法有很多,但我前几天试了一下,发现返回的值都是null,后来才发现,Uri的格式在Android4.4之后有了很大的改动。
content://media/extenral/images/media/17766(4.4前)
content://com.android.providers.media.documents/document/image:2706(4.4后)
- 4.4之前的方法
4.4之前的方法网上都有很多,大多数都是基于cursor来实现的。这里主要讲4.4之后的。 4.4之后的方法
代码在这里有了,大家可以对照来看。
http://www.2cto.com/kf/201502/376975.html
Uri分为三个部分
content://com.android.providers.media.documents/document/image:2706
scheme:content://
authority: com.android.providers.media.documents
path:document/image:2706所以要得到uri对应的文件路径
1、先找到文件是属于什么类型(通过authority来判断,源码中就根据authority的值来分为external_document,media等),可以通过getAuthority()来得到。
2、解析文件path的结构,这里拿MediaDocument举例
String docId=DocumentContract.getDocumen