首页 > 技术知识 > 正文

背景:

在安卓7.0手机上,调用系统相机拍照,结果出现闪退。

原因:

Android7.0中为了提高私有文件的安全性,禁止向你的应用外公开 file:// URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常。

解决方案:

public void openCamera() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imageUri = getImageUri(); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, PHOTO_REQUEST_CAMERA); } public Uri getImageUri() { File file = new File(Environment.getExternalStorageDirectory(), “/temp/” + System.currentTimeMillis() + “.jpg”); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } String path = file.getPath(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { imageUri = Uri.fromFile(file); } else { //兼容android7.0 使用共享文件的形式 ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, path); imageUri = this.getApplication().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); } return imageUri; } 转载自:https://blog.csdn.net/yinxing2008/article/details/82792582 ** 推荐阅读:**
<
Android模拟点击屏幕,实现按键精灵点击屏幕功能 Framework的范围 Framework简介

猜你喜欢