Android7.0调用相机 FileProvider.getUriForFile 报空指针
做项目的时候遇到了问题,在7.0的安卓上使用FileProvider获取content://Uri的时候总是报空指针
NullPointerException: 'android.content.res.XmlResourceParser android.content.pm.PackageItemInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)
跟踪方法到:
final ProviderInfo info = context.getPackageManager()
.resolveContentProvider(authority, PackageManager.GET_META_DATA);
这个是因为,打开系统摄像头的时候, 会临时保存一张图片,这个图片的位置需要在AndroidManifest.xml 中配置出来
<provider
android:authorities="${applicationId}.fileprovider"
android:name="android.support.v4.content.FileProvider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/custom_filepaths"/>
</provider>
这个要写在<application>里面
然后在res/下面创建一个xml文件夹,并且在xml下面创建一个custom_filepaths的xml文件。
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="name" path="images" />
</paths>
具体的如何配置参考如下链接:https://blog.csdn.net/suwenlai/article/details/72845082
这篇文字描述的非常清楚,你可以根据你自己想要保存的位置,配置这个xml文件。
举例:
我在程序中的图片保存位置是 : /storage/emulated/0/images/xxx.jpg
那么我的配置就是 : <external-path name="name" path="images" />
至于为什么请参考,我上面推荐的哪个链接 ,里面描述的非常清楚。
网友评论