Android 7.0调用相机崩溃详解及解决办法

 更新时间:2016年12月15日 16:52:11   作者:晓果博客  
这篇文章主要介绍了 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();
  }
 }
}

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android编程使用WebView实现文件下载功能的两种方法

    Android编程使用WebView实现文件下载功能的两种方法

    这篇文章主要介绍了Android编程使用WebView实现文件下载功能的两种方法,涉及Android基于WebView的相关文件传输与线程操作技巧,需要的朋友可以参考下
    2018-02-02
  • 简单实用的Android UI微博动态点赞效果

    简单实用的Android UI微博动态点赞效果

    这篇文章主要为大家详细介绍了简单实用的Android UI微博动态点赞效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android多线程下载示例详解

    Android多线程下载示例详解

    这篇文章主要为大家详细介绍了Android多线程下载示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Kotlin使用静态变量与静态方法详解

    Kotlin使用静态变量与静态方法详解

    kotlin定义静态变量、方法可以采用伴生对象companion object的方式。 下面这篇文章主要给大家介绍了关于Kotlin使用静态变量与静态方法的相关资料,需要的朋友可以参考下
    2018-12-12
  • Templates实战之更优雅实现自定义View构造方法详解

    Templates实战之更优雅实现自定义View构造方法详解

    本篇文章介绍如何利用Android Studio提供的Live Templates更优雅实现自定义View的构造方法,说句人话就是:简化自定义View构造参数模板代码的编写,实现自动生成,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 图文详解Android Studio搭建Android集成开发环境的过程

    图文详解Android Studio搭建Android集成开发环境的过程

    这篇文章主要以图文的方式详细介绍了Android Studio搭建Android集成开发环境的过程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 详解Flutter如何在单个屏幕上实现多个列表

    详解Flutter如何在单个屏幕上实现多个列表

    这篇文章主要为大家详细介绍了Flutter如何在单个屏幕上实现多个列表,这些列表可以水平排列、网格格式、垂直排列,甚至是这些常用布局的组合,感兴趣的小伙伴可以了解下
    2023-11-11
  • Android 如何采用Lame编码器编码mp3文件

    Android 如何采用Lame编码器编码mp3文件

    这篇文章主要介绍了Android 如何采用Lame编码器编码mp3文件,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03
  • Android开发中模仿qq列表信息滑动删除功能

    Android开发中模仿qq列表信息滑动删除功能

    这篇文章主要介绍了Android开发中模仿qq列表信息滑动删除功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Android使用AsyncTask实现多线程下载的方法

    Android使用AsyncTask实现多线程下载的方法

    这篇文章主要介绍了Android使用AsyncTask实现多线程下载的方法,以完整实例形式详细分析了Android使用AsyncTask实现多线程下载的功能代码,界面布局及权限控制的具体方法,需要的朋友可以参考下
    2016-03-03

最新评论