Android7.0調用拍照和獲取相冊照片,因爲file://引起的FileUriExposedException異常

Android 7.0 就是 File 路徑的變更,需要使用 FileProvider 來做

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {

                imgUriOri = Uri.fromFile(file);

            } else {

                imgUriOri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);

            }

原因:

Android不再允許在app中把file://Uri暴露給其他app,包括但不侷限於通過Intent或ClipData 等方法。原因在於使用file://Uri會有一些風險,比如:

文件是私有的,接收file://Uri的app無法訪問該文件。在Android6.0之後引入運行時權限,如果接收file://Uri的app沒有申請READ_EXTERNAL_STORAGE權限,在讀取文件時會引發崩潰。因此,google提供了FileProvider,使用它可以生成content://Uri來替代file://Uri。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章