Android 7.0调用相机问题_共享路径

Android7.0调用相机报错,这是报的错误最开始以为是权限问题,所以针对6.0以上版本加了动态权限。重装了应用。问题依旧。仔细看了下日志,并各种谷歌。发现是共享路径问题。

 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/PictureSelector/CameraImage/PictureSelector_20180721_043555.JPEG
        at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:739)
        at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:418)
        at com.luck.picture.lib.PictureSelectorActivity.parUri(PictureSelectorActivity.java:437)
        at com.luck.picture.lib.PictureSelectorActivity.startOpenCamera(PictureSelectorActivity.java:364)
        at com.luck.picture.lib.PictureSelectorActivity.startCamera(PictureSelectorActivity.java:340)
        at com.luck.picture.lib.PictureSelectorActivity$9.onNext(PictureSelectorActivity.java:739)
        at com.luck.picture.lib.PictureSelectorActivity$9.onNext(PictureSelectorActivity.java:730)

 修改了好几天。走了不少弯路,终于把问题解决了。顺便说一句我的使用的是  PictureSelector  图片选择框架

(传送门:此处直接附上了GitHub地址,方便查看)

说明的虽然很清楚,方法也很多,基本都符合需求。当时只看到了这么多。以至于后期出现问题都不知道是那里的问题,所以说还是要看清楚每一个库的用法,在使用的时候不至于出现很多令人抓头的错误。

啰嗦就这么多...

这是AndroidManifest的配置。此标签一定要在应用里面,一定要,一定要,一定要,重要的事情要说三遍

 <provider
            android:name="包名.PictureFileProvider"//这里我用的是自定义的FileProvider,v4包下的是默认的,android.support.v4.content.FileProvider
            android:authorities="${applicationId}.provider"
            android:grantUriPermissions="true"
            android:exported="false"
            tools:replace="android:authorities">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                tools:replace="android:resource" //这行不加的话会报错,不懂的自行百度吧
                android:resource="@xml/file_paths" />
        </provider>

在res文件下创建xml文件夹(都懂得,,)创建file_paths.xml。添加 

external-path标签 name是uri路径的片段  path是你共享的子目录  你可以看看这篇文章,对标签的说明还有provider的使用,都挺清晰的

2020年12月24日17:34 补充一

针对以下这个错误,提供解决方法

 android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_4987859912810132257.jpg exposed beyond app through ClipData.Item.getUri()

         // android 7.0系统解决拍照的问题
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure();

此方法也可以解决拍照错误的原因

https://blog.csdn.net/black_bread/article/details/69258613

总结:就这么几个过程,困扰了我好几天。真的是......简直了...这篇文章也是看了好多大神的文章,解决了问题,自己做个小笔记。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值