调用android的Camera 执行结果没有回调onActivityResult()

移动开发 码拜 10年前 (2015-05-11) 1376次浏览 0个评论

我调用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方法????

写法没错,你把&& resultCode == RESULT_OK这个判断干掉。
你其它手机上也是这样么?
40分
http://blog.csdn.net/shen332401890/article/details/9313379
参考一下

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

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

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

关于resultCode == RESULT_OK 这个的判断我是之后才加上去做对比测试的。
之前是没有resultCode == RESULT_OK 这个条件的 ,结果也一样。
问的关键在于 选择确定时 都没有进入onActivityResult()这个方法,就更会不走到resultCode == RESULT_OK 这个判断了。

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

谢谢。

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

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

好的 我试下。

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

引用 6 楼 shen332401890 的回复:

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

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

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

引用 6 楼 shen332401890 的回复:

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

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

CSDN 可能又出问题了,下载上传的资源出来的有问题,以前碰到过,等段时间再下载吧!~
引用 9 楼 shen332401890 的回复:

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

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

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 还是不行,在真确的选择保存方式后 就还是老问题了。

我怀疑你调的那个camera应用有问题,你试试 再装一个其他的camera 应用试试看
引用 11 楼 shen332401890 的回复:

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

我发现了一个问题。
在 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这个方法 或是版本 有问题?

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

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

OK。
问题解决了。
最后发现的问题是,保存文件的路径不对。
我定义了一个路径String imagepath = “/storage/sdcard0/text/touxiang.png”;
虽然之前在创建文件的时候写到
if(!vFile.exists()){
File vDirPath = vFile.getParentFile();
vDirPath.mkdirs();
}
保证路径是绝对存在的,但在new File(imagepath);就认定的路径。
所以 再创建还是无用的。随后我把路径创建正确后。
按确认按钮就调用到了onActivityResult()。并且顺利保存了。
引用 12 楼 Available_M 的回复:
Quote: 引用 11 楼 shen332401890 的回复:

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

我发现了一个问题。
在 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这个方法 或是版本 有问题?

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

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

你这样保存的图片是缩略图吧
保证路径是绝对存在的,但在new File(imagepath);就认定的路径。
所以 再创建还是无用的。随后我把路径创建正确后。
按确认按钮就调用到了onActivityResult()。并且顺利保存了。

看不懂什么意思啊….

引用 14 楼 Available_M 的回复:

OK。
问题解决了。
最后发现的问题是,保存文件的路径不对。
我定义了一个路径String imagepath = “/storage/sdcard0/text/touxiang.png”;
虽然之前在创建文件的时候写到
if(!vFile.exists()){
File vDirPath = vFile.getParentFile();
vDirPath.mkdirs();
}
保证路径是绝对存在的,但在new File(imagepath);就认定的路径。
所以 再创建还是无用的。随后我把路径创建正确后。
按确认按钮就调用到了onActivityResult()。并且顺利保存了。

能具体点步骤么???

他的意思估计是这样的
File file = new File(spath);
// 文件夹不存在则创建
if (!file.exists())         
    file.getParentFile().mkdirs();
imageUri = Uri.fromFile(file);
getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, imageUri) ;
你的文件夹没建立
楼主。我现在跟你碰到了一样的问题,可以把你的源码分享下不
感谢楼主,我的问题也解决了 

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

文章评论已关闭!