错误提示:

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();}}
}

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.text.TextUtils;import java.io.File;
import java.io.IOException;import static android.os.Environment.MEDIA_MOUNTED;/*** 文件操作类* */
public class FileUtils {private static final String JPEG_FILE_PREFIX = "IMG_";private static final String JPEG_FILE_SUFFIX = ".jpg";public static File createTmpFile(Context context) throws IOException{File dir = null;if(TextUtils.equals(Environment.getExternalStorageState(), Environment.MEDIA_MOUNTED)) {dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);if (!dir.exists()) {dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM + "/Camera");if (!dir.exists()) {dir = getCacheDirectory(context, true);}}}else{dir = getCacheDirectory(context, true);}return File.createTempFile(JPEG_FILE_PREFIX, JPEG_FILE_SUFFIX, dir);}private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE";public static File getCacheDirectory(Context context) {return getCacheDirectory(context, true);}public static File getCacheDirectory(Context context, boolean preferExternal) {File appCacheDir = null;String externalStorageState;try {externalStorageState = Environment.getExternalStorageState();} catch (NullPointerException e) { // (sh)it happens (Issue #660)externalStorageState = "";} catch (IncompatibleClassChangeError e) { // (sh)it happens too (Issue #989)externalStorageState = "";}if (preferExternal && MEDIA_MOUNTED.equals(externalStorageState) && hasExternalStoragePermission(context)) {appCacheDir = getExternalCacheDir(context);}if (appCacheDir == null) {appCacheDir = context.getCacheDir();}if (appCacheDir == null) {String cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/";appCacheDir = new File(cacheDirPath);}return appCacheDir;}public static File getIndividualCacheDirectory(Context context, String cacheDir) {File appCacheDir = getCacheDirectory(context);File individualCacheDir = new File(appCacheDir, cacheDir);if (!individualCacheDir.exists()) {if (!individualCacheDir.mkdir()) {individualCacheDir = appCacheDir;}}return individualCacheDir;}private static File getExternalCacheDir(Context context) {File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");if (!appCacheDir.exists()) {if (!appCacheDir.mkdirs()) {return null;}try {new File(appCacheDir, ".nomedia").createNewFile();} catch (IOException e) {}}return appCacheDir;}private static boolean hasExternalStoragePermission(Context context) {int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION);return perm == PackageManager.PERMISSION_GRANTED;}}

改好的库工程:
链接:http://pan.baidu.com/s/1cbySwe
提取码:yl9u

使用方法:http://blog.csdn.net/huangxiaoguo1/article/details/53084166

Android 7.0调用相机崩溃相关推荐

  1. android 7.0 按钮崩溃,Android 7.0调用相机崩溃详解及解决办法

    Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...

  2. android最新相机打不开,Android 7.0调用相机崩溃详解及解决办法

    Android 7.0调用相机崩溃解决办法 错误提示: android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_ ...

  3. Android 8.0+调用相机相册

    写在前面 近期项目的需求是需要去调用相机相册去拍照获取图片保存到服务器 公司的测试机试Android6.0以下的 所以之前调用相机一点都没问题 可是跑在Android8.0+的手机上 调用相机相册就会 ...

  4. Android开发之调用相机拍照与本地图库选择图片

    引用链接 Android开发之调用相机拍照与本地图库选择图片 Android调用相机实现拍照功能 部分截图 引言 小项目有一个访问相册的需求,在网上查找得到两位大神博客指点,但博客发布时间过旧,难免因 ...

  5. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...

  6. Android—显示窗口调用相机与相册

    关于Android点击头像显示窗口调用相机与相册 主要有七步: 点击事件,窗口初始化,点击回调事件,对照片裁剪,裁剪照片保存,声明FileProvider,编写FileProvider的xml文件 1 ...

  7. android调用另一app的xml,Android 7.0+调用其他App打开文件

    ​ 近期需要用到读取Android设备外存中的JSON和Word,在前期开发时用于调试的是Android 6.0的米4,当拿到实际应用环境(Android 7.0)时,Android 6.0之后的版本 ...

  8. Android 7.0 获取相机拍照图片,适配三星手机拍照,解决三星手机拍照屏幕旋转,判断设备是否有摄像头

    方法1 新建/res/xml/file_paths: <?xml version="1.0" encoding="utf-8"?> <path ...

  9. android 6.0 权限程序崩溃,扫二维码崩溃与按键事件

    1.权限 解决困扰我两天的问题,项目调用一些.so文件,demo,和老版本的在华为 6.0系统运行正常,但是我的项目在6.0以下的手机上运行正常,在6.0系统上程序直接崩溃,6.0系统自然想到了权限问 ...

最新文章

  1. SpringBoot 用RestTemplate 优雅的发送HTTP请求,注意需要@Autowired注入后才能用
  2. js中for-in的坑
  3. 学学python(4):面向对象及类,模块
  4. STP生成树协议与MSTP的基本原理与简单配置
  5. IBM云计算带我们进入新服务经济时代
  6. java list类_java_List集合及其实现类
  7. 设置开机不自动进入锁屏状态
  8. php有序数组合并,使用Python怎么合并两个有序数组
  9. 超硬核!小白读了这篇文章,就能在算法圈混了
  10. 《初级会计电算化应用教程(金蝶KIS专业版)》——1.5 习题
  11. 安卓java游戏模拟器_Java手机游戏模拟器
  12. 94G的kindle电子书btsync分享
  13. Unity3D 多层血条特效
  14. 机器学习二:K均值聚类算法(k-means clustering algorithm)
  15. 用U盘安装ubuntu系统的具体步骤
  16. android自定义View之(四)------一键清除动画
  17. iPhone 14连夜跌至4800元,现在应该直接入手14,还是等15?
  18. 《Web安全之机器学习入门》一 3.2 数据集
  19. OpenCV之灰度空间变换
  20. 扬帆起航——第一篇博客

热门文章

  1. 追忆计算机之父艾伦图灵:在一个时刻两次改变历史的人
  2. 一例ASP.net 网站‘此网页包含重定向循环’解决方法
  3. matlab中normcdf函数用法,Matlab中标准正态分布的密度函数是normcdf(x,0,1)
  4. Linux系统调用之access函数
  5. Access数据库的Like查询
  6. 小满未满第三期|小满是什么季节,这些小满海报来告诉你
  7. 思科telnet远程登入
  8. LTI的频域分析matlab,lti系统的频域分析实验报告.docx
  9. 分布式/微服务理论知识
  10. 论文翻译解读:Distributed Representations of Words and Phrases and their Compositionality【Word2Vec优化】