通过URI获取的文件路径为null的解决方法

转载自大神dj0379博客Jingle的专栏

今天调用系统自带的FileChooser后,根据Intent返回的uri获取路径的时一直返回null。

这个问题很奇怪,最后发现验证用的华为P7是Android 4.4系统。

先看下4.4之前的uri的形式:

1
Uri : content://media/extenral/images/media/17766

是不是很熟悉?再看4.4及以后的Uri形式:

1
content://com.android.providers.media.documents/document/image%2706

日志一打印出来我就明白是什么原因啦。这什么东西在Android 4.4前后不一样,4.4之前content后面是文件全路径,4.4之后不再直接表示路径啦。这就好办啦,翻了翻API后发现4.4以后的Uri还不唯一,并不是统一的一种格式,所以就来个通用解决办法好啦:

4.4以前通过Uri获取路径:data是Uri,filename是一个String的字符串,用来保存路径。

URL