美文网首页
常见问题 | 打开系统摄像头

常见问题 | 打开系统摄像头

作者: stamSuper | 来源:发表于2018-11-26 23:31 被阅读0次

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" />
至于为什么请参考,我上面推荐的哪个链接 ,里面描述的非常清楚。

相关文章

网友评论

      本文标题:常见问题 | 打开系统摄像头

      本文链接:https://www.haomeiwen.com/subject/zifwqqtx.html