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
總結:就這麼幾個過程,困擾了我好幾天。真的是......簡直了...這篇文章也是看了好多大神的文章,解決了問題,自己做個小筆記。