最近在项目中遇到了7.0系统相机调用适配问题,特此记录。
在6.0之后,7.0之前我们调用相机并保存图片需要用到6.0的运行时权限,在此不做描述。7.0之后我们不仅需要6.0的运行时权限还需要用到系统提供的FileProvider来创建一个Uri(7.0之前我们只需自己指定一个图片存储路径)。
以下是请求权限代码片段:
申请权限
注:private static final int CAMERA_PERMISSIONS_REQUEST_CODE=0x03;
以下是7.0之前的调用相机代码片段:
7.0之前调用相机
以下是7.0之后调用相机代码片段:
7.0调用相机
注意:此处com.takePhotoDemo.FileProvider须与清单注册的authorities内容保持一致。
7.0之后需要用到系统提供的FileProvider。所以我们还需要进行以下几步:
1:在res文件夹下新建xml文件夹,再在xml下新建文件file_paths.xml。代码如下:
file_paths.xml
2:在清单文件里注册FileProvider。代码如下:
注册provider
最后附上完整代码: