调用相机拍摄方法

  1. /**
  2. * capture new image
  3. */
  4. protected void selectPicFromCamera() {
  5. if (!EaseCommonUtils.isSdcardExist()) {
  6. Toast.makeText(getActivity(), R.string.sd_card_does_not_exist, Toast.LENGTH_SHORT).show();
  7. return;
  8. }
  9.  
  10. cameraFile = new File(PathUtil.getInstance().getImagePath(), EMClient.getInstance().getCurrentUser()
  11. + System.currentTimeMillis() + ".jpg");
  12. //noinspection ResultOfMethodCallIgnored
  13. cameraFile.getParentFile().mkdirs();
  14.  
  15. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  16. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
  17. intent.putExtra(MediaStore.EXTRA_OUTPUT,
  18. FileProvider.getUriForFile(getActivity(),"你的包名.fileprovider", cameraFile));
  19. }else {
  20. intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));
  21. }
  22. startActivityForResult(intent, REQUEST_CODE_CAMERA);
  23.  
  24. }

相机拍摄后的回调如下:

  1. @Override
  2. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  3. super.onActivityResult(requestCode, resultCode, data);
  4. //xqxhx add 避免data数据为null
  5. if (data==null){
  6. return;
  7. }
  8. if (resultCode == Activity.RESULT_OK) {
  9. if (requestCode == REQUEST_CODE_CAMERA) { // capture new image
  10. if (cameraFile != null && cameraFile.exists()) {
  11. sendImageMessage(cameraFile.getAbsolutePath());
  12. }

此时发现 代码执行到 if(data==null)就结束了,问题为为什么拍摄相机的回调图片数据data为null

查询发现:

照相机有自己默认的存储路径,拍摄的照片将返回一个缩略图,即data里面保存的数据。

但是如果自己代码指定了保存图片的uri,data里面就不会保存数据。也就是说,调用相机时指定了uri,data就没有数据,没有指定uri,data就有数据。

但是这个规律也不是适用于所有的安卓手机,红米和三星部分型号在没有指定uri时,data依然没有数据。

由此上述If(data==null){retrun;}

看上去是做了一层保护,避免数据异常的情况发生,但是在此情况下,则不适用,去除即可继续执行下面的代码。

关于相机拍照获取图片onActivityResult返回data 为null的问题的更多相关文章

  1. Android获取本地相册图片、拍照获取图片

    需求:从本地相册找图片,或通过调用系统相机拍照得到图片. 容易出错的地方: 1,当我们指定了照片的uri路径,我们就不能通过data.getData();来获取uri,而应该直接拿到uri(用全局变量 ...

  2. windows phone 使用相机并获取图片(3)

    原文:windows phone 使用相机并获取图片(3) 使用相机需要引用如下命名空间 " Margin="12,10,12,0" ></Image> ...

  3. [转]微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传

    本文转自:http://blog.csdn.net/qq_31383345/article/details/53014610 今天遇到微信小程序的用户头像设置功能,做笔记. 先上gif: 再上代码: ...

  4. 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传

    1.index.wxml <!--index.wxml--> <button style="margin:30rpx;" bindtap="choose ...

  5. android调用系统相机并获取图片

    如果不是特别的要求,通过拍照的方式取得图片的话,我们一般调用系统的拍照来完成这项工作,而没必要再自己去实现一个拍照功能.调用系统相机很简单,只需要一个intent就可以跳转到相几界面,然后再通过onA ...

  6. Android自定义相机拍照、图片裁剪的实现

    最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类似于小猿搜题.学霸君等app. 其实Android提 ...

  7. android 调用系统相机拍照 获取原图

      好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就 ...

  8. 转:iPhone上关于相机拍照的图片的imageOrientation的问题

    用相机拍摄出来的照片含有EXIF信息,UIImage的imageOrientation属性指的就是EXIF中的orientation信息.如果我们忽略orientation信息,而直接对照片进行像素处 ...

  9. Android相机、相册获取图片显示并保存到SD卡

    Android相机.相册获取图片显示并保存到SD卡 [复制链接]   电梯直达 楼主    发表于 2013-3-13 19:51:43 | 只看该作者 |只看大图  本帖最后由 happy小妖同学 ...

随机推荐

  1. jquery click嵌套 事件重复注册 多次执行的问题解决

    jquery click事件中嵌套click会重复注册内部的click事件,导致重复执行. 比如 $(...).click(function(){   $(...).click(function(){ ...

  2. NetStandard;.netCore;FX(.netFrameWork)之间引用关系

    .NetStandard;.netCore;FX(.NetFrameWork)之间引用关系   FX引用.NetCore:不通过 NetStandard引用.NetCore:不通过   .NetCor ...

  3. kibana6.2.4版本更新x-pack认证

    我在上一次介绍了如何安装时基本使用elk留下了一个问题,这次来解决这个问题,相必大家也想知道,接下来就看详细过程. 上次说到,直接看图吧. 因为x-pack是收费的,所以试用期只有一个月.长期使用就必 ...

  4. 10 Tensorflow模型保存与读取

    我们的模型训练出来想给别人用,或者是我今天训练不完,明天想接着训练,怎么办?这就需要模型的保存与读取.看代码: import tensorflow as tf import numpy as np i ...

  5. Centos7安装MySQL8.0 - 操作手册

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 一.  Mysql8.0版本相比之前版本的一些特性 1) ...

  6. go捕获Ctrl+C信号

    我们希望当服务器接收到一个 SIGTERM 信号时能够自动关机,或者做一些善后的操作,以下是实现的方法 package main import ( "os" "os/si ...

  7. HTML语法介绍

    一 基本标签(块级标签和内联标签) <hn>: n的取值范围是1~6; 从大到小. 用来表示标题. <p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白. &l ...

  8. Java设计模式学习记录-模板方法模式

    前言 模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中.使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤. 模板方法模式 概念介绍 模板方法模式,其实是很好理解的,具体 ...

  9. 【转】JAVA解压.TAR.Z及.ZIP文件

     解压.ZIP文件 package app.qdupr.Method; import java.io.File; import java.io.FileOutputStream; import jav ...

  10. BurpSuiteProxy安装使用

    第一步先安装jdk    https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html  ...