android调用系统相机拍照报错,onActivityResult中data为null 5C

这是书上的一个练习,对着敲的,运行时拍照后点完成就出错,什么原因啊?怎么解决
图片说明

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
public static final int TAKE_PHOTO=1;
public static final int CROP_PHOTO=2;
private Button takePhoto;
private ImageView picture;
private Uri imageUri;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 //获取控件实例
    takePhoto=(Button) findViewById(R.id.take_photo);
    picture=(ImageView) findViewById(R.id.picture);
    takePhoto.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //创建File对象,拥有储存拍的照片
            File outputImage=new File(Environment.getExternalStorageDirectory(),"outputImag.jpg");
            //getExternalStorageDirectory()获取手机sd卡的根目录
            try{
                if(outputImage.exists()){
                    outputImage.delete();
                }
                outputImage.createNewFile();
            }catch(IOException e){
                e.printStackTrace();
            }
                //将File对象转换成Uri对象
                imageUri=Uri.fromFile(outputImage);
                Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //指定保存路径
                startActivityForResult(intent,TAKE_PHOTO);//启动相机程序   拍完照后返回到onAcitvityResult()
        }
        });
        }  
     protected void onActivityResult(int requestCode, int resultCode, Intent data ){
         Log.d("MainActivity", "ok");
         switch(requestCode){
         case TAKE_PHOTO:        
         if (resultCode==RESULT_OK){
                 //执行裁剪照片的逻辑
                 Intent intent=new Intent("come.android.camera.action.CROP");
                 intent.setDataAndType(imageUri, "image/*");
                 intent.putExtra("crop", true);
                 intent.putExtra("scale", true);
                 intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);//输出文件
                 startActivityForResult(intent, CROP_PHOTO); // 启动裁剪程序  
             }
         break;
         case CROP_PHOTO:
             if(resultCode==RESULT_OK){  
                try {
                    // 用BitmapFactory的decodeStream()方法将output_image.jpg这张照片解析成Bitmap对象
                    Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));  
                    picture.setImageBitmap(bitmap);//显示裁剪的照片
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }   
             }
               break;
             default:
               break;
         }
     }
     }

8个回答

根据log显示是没找到action是come.android.camera.action.CROP的Activity,哈哈,应该是你的action写错了吧,应该是com.android.camera.action.CROP,你把com 写成了 come,望采纳^-^

oSanYeCao1234567
RoidCoder 回复wanghang1208: 望采纳下^_^
接近 3 年之前 回复
wanghang1208
wanghang1208 正确。
接近 3 年之前 回复

缺少权限设置吧
加入

//文件创建、删除权限

//文件读写权限,只针对于手机内存的SDCard,对外接SDCard无效

可能没写权限。
或者模拟器没有摄像头

模拟器一般没有摄像头的,这里是ActivityNotFound异常,应该就是这个原因,还有如果是真机小米也会出现这种情况

默认情况下,不需要指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
照相机有自己默认的存储路径,拍摄的照片将返回一个缩略图。
如果想访问原始图片,可以通过dat extra能够得到原始图片位置。
即,如果指定了目标uri,data就没有数据,如果没有指定uri,则data就返回有数据!
你这里指定了路径,那你直接去找到那个路径加载那个图片即可。

可能是缺少权限,也能两个参数写错了

缺少权限,设置添加CROP的权限

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android调用系统相机onActivityResult返回参数data为null
一般调用系统相机的代码: filePath = ImageUtil.getCacheFilePath(this, StaticValue.PHOTO_PROTOCOL_ENTRUST); File file = new File(filePath); Intent intentFromCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
android 调用系统相机拍照,返回的data为null
最近做项目,需要拍照功能,于是就想简单的调用系统相机来完成这一需求(当然,如果想要个性化一点的,也可以自定义camera去实现,这里暂时不做)。if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ){ Intent intent = new Intent(MediaStore.ACT
解决android调用系统相机拍照保存时onActivityResult中data为null的问题
调用系统相机照相的代码: boolean isNull=false;//判断照相机返回数据是否为空 Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); File file = new File(Environment.getExternalStorageDirectory()
Android 调用系统相机返回data为null
现在市场上很多app都有拍照功能,一般简单的拍照使用系统的拍照功能就足够了,复杂一些的需要自定义camera去实现。 使用系统的拍照功能一般代码实现如下: /** * 调用系统拍照功能 */ @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_take_photo: if( Environ
android调用系统相机拍照
private String mPath; private static final int REQUESTCODE_TAKE_PHOTO = 5; private void openCamera() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 加载路径...
Android 调用系统相机拍照
Android 调用系统相机拍照,包括静默拍照,参考别人
调用android系统相机拍照
通过代码,调用系统的硬件摄像头照相.并显示预览
解释 Android 调用系统相机,在onActivityResult中接收的data为null的原因
很多时候,我们在使用程序调用系统相机的时候,会发现在onActivityResult中接收的data为null,开始我也一直不明白,这是为什么,后来查看了源码才知道,今天在这记录一下,方便以后忘了。哈哈。 下面这个方法是我调用系统相机的方法,其中红色标记的方法是设置拍照后相片保存的地址。 /** * 设置一些参数 * */ private void takePhoto ()
Android调用系统相机拍照(返回为原图)
Android调用系统相机拍照,默认返回为缩略图大约几十K,一些场景下返回缩略图时不行的。在这个源码里分别实现了调用系统相机后返回缩略图(几十k)和原图(1—n M不等的图片(即正常用相机拍照的图片))。
Android 调用系统相机拍照的返回结果
1.打开相机的Intent Action: MediaStore.ACTION_IMAGE_CAPTURE,下面为它的注释: /** * Standard Intent action that can be sent to have the camera application * capture an image and return it. * *
androidの调用系统相机拍照
androidの调用系统相机拍照,简单实用,方便你的开发
Android调用系统相机进行拍照
调用系统相机进行拍照demo,代码是自己跟着慕课网课程《Android摄像头基础》(https://www.imooc.com/u/2950649/courses)中手动敲的,如果大家不想下载可以直接去看视频讲解,很短而且讲的不错。需要注意的是在真机中调试的时候除了在AndroidManifest.xml中申请权限外还需要手动在真机的应用权限中手动开启相机和存储权限,否则会出现闪退。
Android下WebView中调用系统相机拍照范例
自定义webview中的网页“拍照”按钮调用系统相机拍照的API接口MyBrowserAPI.CapturePhoto(filename),在网页JavaScript中调用以后返回存放照片的完整路径名,默认将照片存放在系统SD卡的根目录,包含整个工程中需要添加的每个重要代码和JavaScript网页代码及详细描述。实测从Android2.1-4.22版虚拟机与真机均可正常使用。
调用系统相机拍照和自定义相机拍照。
    前一段时间,做项目的时候遇到了一个需要上传身份证的小功能,想了向需要
调用系统相机拍照功能
拍照制作缩略图 布局activity_camera_image               android:id="@+id/activity_camera_image"               android:layout_width="match_parent"               android:layout_height="match_parent">
调用系统相机拍照
调用系统相机拍照,将拍照的图片进行裁剪,压缩。最后显示到imageview上面。
调用系统相机拍照保存
[code="java"] public class CameraActivity extends Activity { private static int TAKE_PICTURE = 1; private Uri outputFileUri; private File file; private String filename,filepath; private Bit...
调用系统相机进行拍照
方式一:public class MainActivity extends Activity implements OnClickListener { private Button button; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState
安卓调用系统相机拍照
import java.io.File;import android.app.Activity; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; i
android 调用系统相机拍照爬坑 onActivityResult 结果码为0
     Android调用系统相机,需要注意的地方无非就是6.0之后的动态授权,7.0的系统对api 的限制需要使用Provider 等适配问题,大家网上一搜一大堆相关的文章。   但是最近做项目发现6.0,7.0 等适配问题都做了处理,但是拍完照片之后 onActivityResult 的结果码resultCode始终等于0,网上搜了很多答案有说是activity 启动模式为单例的,有说是没...
Android调用系统相机拍照并存入相册
调用系统相机的方法如下: private void onTakeCamera(){ String path = fileHandler.getCameraPath()+"SM_"+System.currentTimeMillis()+".jpg"; tempFile= new File(path); if(tempFile != null){ Intent i
Android调用系统相机拍照,避免内存溢出的实现
因为调用系统相机拍照的时候,有时候要求连续拍照,而且系统相机的帧数相对较高,所以需要我们事前做好相应的压缩处理,不多说,看代码。 private void intoPhotos() { File mediaStorageDir = new File(FileUtil.getPathRoot()+"/ietmDatas","customPicture"); if (!media...
Android调用系统相机拍照并保存
保存图片有两种方式:保存拍照的缩略图(图片分辨率低,文件小)、保存拍照的原始图片(图片分辨率高,文件大)。 1.保存拍照的缩略图 AndroidManifest.xml中添加权限: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="andro...
Android学习之调用系统相机实现拍照功能
一、今天,来介绍如何调用系统自带的相机进行拍照,主要有以下2种实现的方式: 1、Camera应用程序包含了一个意图过滤器,即intent filter,它使得开发人员能够提供与Camera应用程序同等的图像捕获能力,因此我们可以在应用程序的AndroidManifest.xml清单文件中新建一个意图过滤器,这样就会告诉Android系统,这个包含此意图过滤器的活动将根据指令执行指定的任务,创建意图
Android 调用系统相机拍照、以及相册
Android 调用系统相机拍照、以及相册。完成之后图片是上传到app上。没有上传到服务器,因为我没服务器测试。但项目里面有个类可以参考上传图片到服务器,我就没测试了。欢迎下载。
Android调用系统相机拍照 获取原图
拍照时候在onActivityResult中获得相机拍照后点击确定后的照片。 Android中用Intent提取缩略图和原始图像 可以接受照片的缩略图Bundle bundle =data.getExtras(); photo = (Bitmap)bundle.get("data");或者photo=data.getParcelableExtra("data");也可以接受原图片的uri地址在I
android调用系统相机拍照并保存本地
public class PhotographActivity extends AppCompatActivity { public static Handler handler ; private static String srcPath; @Override protected void onCreate(Bundle savedInstanceState)...
Android 调用系统相机,拍照并返回显示
1.添加系统权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:na
android 调用系统相机拍照 获取原图
好吧,为了这个问题又折腾了一整天。之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就知道了。如果要获取原图,还需要一番折腾(特别是对于手里这个Samsung i9000)——之前朋友在不同的机型上使用的方法在我这里一直报错,且属于那种uncaught的错误-.- 话说回来,具体的折腾方...
Android 调用系统相机拍照 . 选取本地相册
项目中,基本都有用户自定义头像或自定义背景的功能,实现方法一般都是调用系统相机–拍照,或者系统相册–选择照片,然后进行剪裁,最终设为头像或背景。 我直接贴上使用的代码吧! 这次偷懒了,没有做效果图,不过这是我试过的代码,可以,只不过不能选取原图,因为会导致OOM问题 1.清单文件配置 &amp;lt;uses-permission android:name=&quot;android.pe...
Android 7.0 调用系统相机拍照、裁剪相片
最近开发遇到一个尴尬的问题,被一个拍照功能整得头大。因为程序跑在7.0的手机上一拍照或者选取相册图片就崩溃掉了!!!然后开始查了一大堆的资料,整完了还是记录整理一下。才开始写博客的一个小开发,欢迎吐槽        对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI
Android拍照onActivityResult的奇怪BUG
这个BUG是一个很奇怪的问题,调用系统相机拍照(在别人的手机上还有美颜相机,美颜相机很容易出这个问题,系统相机不太容易出)n第一次遇到这种特别奇葩的问题,完全跟踪不到,无论如何都没有任何错误输出,没有任何提示无征兆的闪退。n具体就是传入一个指定文件作为拍照文件。如下:nnn```n Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);n if (picturesUploadAndEditView != null)n picturesUploadAndEditView.dissmissDialog();n n tempPhotoPath = getTempImage();n if (tempPhotoPath == null || tempPhotoPath.trim().equals(""))n Toast.makeText(MyApplication.getInstance(), getResources().getString(R.string.sd_error), Toast.LENGTH_LONG);n return;n n File tempFile = new File(tempPhotoPath);n Uri imageUri = Uri.fromFile(tempFile);n intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);n startActivityForResult(intent, ACTION_TAKE_PHOTO);n```ngetTempImage()是一个自动生成照片保存路径的方法。n但是拍照完毕后 大概有20%左右几率,程序会直接闪退。经过调试发现是tempPhotoPath变成了null.加了try catch捕获异常并加Toash提示却无效,Toash根本不出程序就直接闪退了。后来我甚至把整个onActivityResult都加try里面了,但是还可能闪退,奇怪的是,闪退没有任何的错误输出,后来我在代码里逐行加调试输出跟踪,发现只要执行了return,就没有然后了,执行完了,程序不是回到原来的地方而是闪退出去,没报错信息。后来加了UncaughtExceptionHandler试图捕获错误输错却根本没进入到那里面去。求解,彻底没有任何思路了。
android 调用系统相机进行拍照及照片的裁切
调用系统相机进行拍照是android开发中常用到的功能,比如:拍照了直接发朋友圈等。还有常用的要进行图片的裁剪,例如:上传自己的头像等。你又不能拍完照直接上传,然后在读取截止中间的,这样不一定是用户想要的部分。所以,我们通常是让用户自己按照我们的比例,来进行裁剪。这就用到裁剪技术了。 今天,我就是要说一下调用系统的相机的一些常用的技术。
总结Android调用系统相机拍照遇到的坑
拍照功能在应用开发中几乎已成为标配,例如用户通过拍照上传头像。实现拍照功能的方式有两种。第一种是使用相机API(即Camera类)来自定义拍照,第二种是使用Intent调用系统相机来拍照。其中最常见的方式是直接调用系统相机拍照来获取照片。 调用系统相机获取照片的流程如下,这里省去了声明权限和动态权限申请: private String mFilePath;// 需要初始化,路径自定义 pr
android 调用系统相机拍照,并且裁剪图片上传
我写的程序在一个客户的手机上不能拍照,一点就崩,后来发现同事的手机也是,后来我发现,华为手机就是有这个问题,经过我的不懈努力,终于解决了,但是有一个问题还没解决就是,如果你用了我的拍照并上传的方法后,你会发现,如果你项目里有扫描二维码的功能,那你就用不了了,因为清单文件里相机权限和这个相机动态权限有冲突,清单文件了不能有相机权限,但是要有写入sd卡的权限。 添加权限: &amp;lt;uses-pe...
Android demo--调用系统相机拍照并显示图片为黑白
1.环境搭建 操作系统是Mac OS,一年多以前写Android的时候用的还是Eclipse,操作系统是Windows,记得环境很难搭建,总是会有错误,所以面试的时候要求完成这个Demo还是有一点点虚。不过用Baidu和Google查了怎么搭建环境之后,发现有了官方的IDE:Android Studio,我还是很开心的,决定不用eclipse搭环境了,改用Android Studio,因为这样只
android调用系统相机拍照,返回数据为空的一些说明
相机拍照获取图片的问题
以调用系统相机拍照为例了解Android 6.0运行时权限
首先扯点别的,听说这个周末是好天气,想约她一起去公园赏赏梅花,只有我自己估计她也不一定去啊,哈哈。在android6.0及以上系统,Android在安装一个应用的时候不再需要列出一大堆权限,让用户点击同意以后才可以安装。Instead, 当应用在运行的时候,如果要使用危险权限的时候需要明确告知用户并得到用户许可后方可进行一些Android系统认为是危险行为的操作。另外当你在程序运行过程中开启了某些权
onActivityResult Intent的值为Null
从一个A跳转到B,按返回键的时候onActivityResult 的Intent的值为null,这是什么问题?
小米5 调用系统相机 onActivityResult 里面获取size为0
[code=java]@Overridern protected void onActivityResult(int requestCode, int resultCode, Intent data) rn if (requestCode == REQUEST_CODE_CAMERA) rn String tempPhotoPath = getTempPhotoPath(register.getInsid());rn//这是获取生成文件的大小,奇怪的是这里获取的是0,其他手机都不会我估计是6.0 调用系统相机有改变???rn long size = FileUtil.getFileSize(tempPhotoPath);rn Log.i("TAG2", "-------1--------初始大小size:" + size);rn long sizecompress = 0;rn if (resultCode == Activity.RESULT_OK) rn if (size > SettingsConstant.PIC_SIZE) rn sizecompress = compressImage(tempPhotoPath);rn rn sizecompress = sizecompress == 0 ? size : sizecompress;rn Log.i("TAG2", "-------2--------压缩大小size:" + size);rn // 照片不能大于500kbrn if (sizecompress <= SettingsConstant.PIC_SIZE) rn SavePhotoAsyncTask savePhotoAsyncTask = new SavePhotoAsyncTask();rn savePhotoAsyncTask.execute(tempPhotoPath);rn else rn // 删除临时图片rn FileUtil.deleteFile(tempPhotoPath);rn rn rn else if (resultCode == Activity.RESULT_CANCELED) rn // 删除临时图片rn FileUtil.deleteFile(tempPhotoPath);rn rnrn else if (requestCode == REQUEST_CODE_INFO) rn finish();rn rn super.onActivityResult(requestCode, resultCode, data);rn [/code]rn//这点是调用系统相机的方法 rn Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);rn intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);rn try rn intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(FileUtil.createFile(photoPath)));rn catch (Exception e) rn e.printStackTrace();rn rn startActivityForResult(intent, REQUEST_CODE_CAMERA);rnrnrnrnrn求解???????????????????????????????????
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数