Welcome

首页 / 移动开发 / Android / Android 7.0调用相机崩溃详解及解决办法

Android 7.0调用相机崩溃解决办法
 错误提示:
android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1041503431.jpg exposed beyond app through ClipData.Item.getUri()


处理方式
/** * Open camera */private void showCameraAction() { if (ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,getString(R.string.mis_permission_rationale_write_storage),REQUEST_STORAGE_WRITE_ACCESS_PERMISSION); } else {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (intent.resolveActivity(getActivity().getPackageManager()) != null) { try {mTmpFile = FileUtils.createTmpFile(getActivity()); } catch (IOException e) {e.printStackTrace(); } if (mTmpFile != null && mTmpFile.exists()) { /*获取当前系统的android版本号*/int currentapiVersion = android.os.Build.VERSION.SDK_INT;Log.e("currentapiVersion","currentapiVersion====>"+currentapiVersion);if (currentapiVersion<24){ intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile)); startActivityForResult(intent, REQUEST_CAMERA);}else { ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, mTmpFile.getAbsolutePath()); Uri uri = getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(intent, REQUEST_CAMERA);} } else {Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show(); }} else { Toast.makeText(getActivity(), R.string.mis_msg_no_camera, Toast.LENGTH_SHORT).show();} }}
 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!