android调用Camera 执行后没有回调onActivityResult

移动开发 码拜 6年前 (2015-09-13) 1172次浏览

 

我调用android系统的 camera :

Uri uri = Uri.fromFile(new File(imagepath));

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

mactivity.startActivityForResult(intent,2);

打开了系统相机,并且重写了onActivityResult(int requestCode, int resultCode,Intent data)方法。

@Override

public void onActivityResult(int requestCode, int resultCode,Intent data){

super.onActivityResult(requestCode, resultCode, data);

if(requestCode == 2 && resultCode == RESULT_OK)

{

cameraview.iview.setImageURI(Uri.fromFile(new File(cameraview.imagepath)));

Bitmap bmp = (Bitmap)data.getExtras().get(“data”);

Log.d(“Test”, “bmp width” + bmp.getWidth() + “,height:” + bmp.getHeight());

}

}

我拍照后 ,点击确认键,没有任何反应。点击取消键 才回调了onActivityResult方法。

请高手指教,为什么点击“确认”没有回调onActivityResult方法?

#1
写法没错,你把&& resultCode == RESULT_OK这个判断干掉。

你其它手机上也是这样么?

#2

40分

http://blog.csdn.net/shen332401890/article/details/9313379

参考一下

另外,你的应用的launchmode 是啥?默认么?

再者 试试楼上的说法 先不加判断条件试试看

#3
我回复下1楼和2楼的问题。

关于resultCode == RESULT_OK 这个的判断我是之后才加上去做对比测试的。

之前是没有resultCode == RESULT_OK 这个条件的 ,结果也一样。

问的关键在于 选择确定时 都没有进入onActivityResult()这个方法,就更会不走到resultCode == RESULT_OK 这个判断了。

另外 launchmode 应该是默认的,因为我没动过关于launchmode的东西。

谢谢。

#4
你先下载一下 我给你连接所提供的代码 看看效果。那个是我调试过的程序!~

还有换台机子试试你的代码

#5
好的 我试下。
#6

帅哥  以后回复 电商引用 要不然 看不到啊!~!~!~

#7

回复6楼:

帅哥 请确认下 你提供的这个东西好不。http://blog.csdn.net/shen332401890/article/details/9313379

我下载了  这个项目里根本没有代码。是空的。好不。

#8

回复6楼:

不好意思 是我搞错了。 我再试试。

#9
CSDN 可能又出问题了,下载上传的资源出来的有问题,以前碰到过,等段时间再下载吧!~
#10

回复9楼:

我看过那个代码了。和我的没有太大却别。

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));

我刚刚在设置 putExtra()的时候 把MediaStore.EXTRA_OUTPUT 换成了 MediaStore.EXTRA_SHOW_ACTION_ICONS ,在点击确定后 可以回调了 而且参数也正确了。

但是这样就没有办法保存图片路径了。

等于说 我使用 MediaStore.EXTRA_OUTPUT 还是不行,在真确的选择保存方式后 就还是老问题了。

#11
我怀疑你调的那个camera应用有问题,你试试 再装一个其他的camera 应用试试看
#12

回复11楼:

我发现了一个问题。

在 onActivityResult(int requestCode, int resultCode, Intent data) 这个方法中。

如果点击确定 data 值应该是NULL 点击取消,data才有值。

我把putExtra()的第一个参数改为  MediaStore.EXTRA_SHOW_ACTION_ICONS 时。无论确定还是取消,虽然都可以回调onActivityResult()方法,但data的值一直是有值得。

而我改成 正确的 MediaStore.EXTRA_OUTPUT 时。点击确认就无法回调到onActivityResult()这个方法。

所以我怀疑 在内部回调onActivityResult()方法之前,对于 其中的参数data就已经被设置的限制,有可能data为NULL时,就不返回onActivityResult()这个方法了。我这仅仅是猜想。

还你有说的 CAMERA有问题是什么意思?我调用的是系统CAMERA,你是说 系统的这个CAMERA有问题是吗?

还是说CAMERA这个方法 或是版本 有问题?

晕啊,这个问题困扰我两天了。

#13
我指的Camera 是这里的系统Camera应用,你可以尝试一下安装其他的Camera 应用是否OK

#14
OK。

问题解决了。

最后发现的问题是,保存文件的路径不对。

我定义了一个路径String imagepath = “/storage/sdcard0/text/touxiang.png”;

虽然之前在创建文件的时候写到

if(!vFile.exists()){

File vDirPath = vFile.getParentFile();

vDirPath.mkdirs();

}

保证路径是绝对存在的,但在new File(imagepath);就认定的路径。

所以 再创建还是无用的。随后我把路径创建正确后。

按确认按钮就调用到了onActivityResult()。并且顺利保存了。

#15

回复12楼:

亲,如果用你MediaStore.EXTRA_OUTPUT的时候,data是null,这个没错的,你直接把这个参数删掉就好了,即intent.putExtra(MediaStore.EXTRA_OUTPUT, path);不用这句,如果用这句的话,你在onactivityresult里不要判断data,图片内容直接从path路径上取~~

#16
你这样保存的图片是缩略图吧
#17
保证路径是绝对存在的,但在new File(imagepath);就认定的路径。

所以 再创建还是无用的。随后我把路径创建正确后。

按确认按钮就调用到了onActivityResult()。并且顺利保存了。

看不懂什么意思啊….

#18

回复14楼:

能具体点步骤么?

#19
他的意思估计是这样的

File file = new File(spath);

// 文件夹不存在则创建

if (!file.exists())

file.getParentFile().mkdirs();

imageUri = Uri.fromFile(file);

getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, imageUri) ;

#20
你的文件夹没建立

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android调用Camera 执行后没有回调onActivityResult
喜欢 (0)
[1034331897@qq.com]
分享 (0)