- 启动相机
//实例化一个File对象outputImage用于存储拍下来的照片
File outputImage = new File(getExternalCacheDir(), "output_image.jpg");
try {
//因为是缓存图片,所以如果已存在就直接删除,接下来创建一个空文件
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//因为从Android 7.0开始直接使用本地真实路径的Uri被认为是不安全的
//需要使用特殊的内容提供器FileProvider来将outputImage封装成一个Uri对象
// 从而使用和内容提供器类似的机制保护数据
if (Build.VERSION.SDK_INT >= 24) {
//封装outputImage,第二个参数需要和在AndroidManifest文件中配置的provider的authority属性一样
imageUri = FileProvider.getUriForFile(MainActivity.this, "com.example.mediatest.fileprovider", outputI