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的使用,都挺清晰的
https://blog.csdn.net/black_bread/article/details/69258613
总结:就这么几个过程,困扰了我好几天。真的是......简直了...这篇文章也是看了好多大神的文章,解决了问题,自己做个小笔记。