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。

猜你喜欢

转载自blog.csdn.net/Wang_WY/article/details/101171560