日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓7.0拍照遇到 Uri暴露错误

發(fā)布時間:2024/4/17 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓7.0拍照遇到 Uri暴露错误 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近,項(xiàng)目又做到,調(diào)用攝像頭拍照獲取圖片這個功能。

用以前的代碼直接用,發(fā)現(xiàn)在Android7.0上使用時會出現(xiàn)問題。

Android6.0之后,動態(tài)申請權(quán)限已成常態(tài)。

調(diào)用攝像頭拍照獲取圖片這個功能,需要動態(tài)申請 照相機(jī)權(quán)限、SD卡讀寫權(quán)限。

可是加了這些權(quán)限后,還是會報(bào)錯。

錯誤:android.os.FileUriExposedException: file:///storage/emulated.. exposed beyond app through Intent.getData()

這個是uri暴露錯誤。

從Android?7.0開始,一個應(yīng)用提供自身文件給其它應(yīng)用使用時,如果給出一個file://格式的URI的話,應(yīng)用會拋出FileUriExposedException。這是由于谷歌認(rèn)為目標(biāo)app可能不具有文件權(quán)限,會造成潛在的問題。所以讓這一行為快速失敗。

網(wǎng)上有兩種解決方法:FileProvider方式 和?VmPolicy方式。

第一種是是谷歌官方推薦的解決方案,我這里也是采用第一種方法。

步驟:1.在AndroidManifest.xml中添加如下代碼

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package=""><application><providerandroid:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths"/></provider></application> </manifest> View Code

? ? ? ? 2.在res目錄下新建一個xml文件夾,并且新建一個provider_paths的xml文件

<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"><!--"."表示所有路徑--><external-path name="external_files" path="."/> </paths> View Code

? ? ? ? 3.使用到uri的代碼

Uri photoURI = Uri.fromFile(createImageFile());變成:Uri photoURI = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", createImageFile()); View Code

修改代碼后,再次調(diào)試,程序正常運(yùn)行。

?

ps:只是個小功能,網(wǎng)上也有不少資料,但還是自己總結(jié)一下比較好!

?

補(bǔ)充:按照以上步驟修改代碼之后,發(fā)現(xiàn):在4.4版本以下sdk運(yùn)行時,拍照返回報(bào)錯,所以,這里需要判斷sdk版本再做處理,當(dāng)sdk版本大于4.4時,使用以上方法;當(dāng)sdk版本小于等于4.4時,uri相關(guān)代碼不做修改。

轉(zhuǎn)載于:https://www.cnblogs.com/shenchanghui/p/6955744.html

總結(jié)

以上是生活随笔為你收集整理的安卓7.0拍照遇到 Uri暴露错误的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。