0

我正在尝试从相机中获取图像。它工作正常。我可以拍照并在图像视图中显示。实际上,我想在拍摄后将这张照片发送到我的服务器。为此,我尝试将图像拉入onActivityResult. 但是,当我检查 Intent 数据时,它总是返回 null。即使应用程序运行良好并显示图像。为什么我的 Intent 数据为空?请你帮助我好吗?

这是代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case ACTION_TAKE_PHOTO_B: {
            if (resultCode == RESULT_OK) {
                        Log.e("TAG","data: "+data);
                    display_Photo();            


            //Process the image to send but, data is null   
            }
            break;
        }

    } 
    }

日志猫:

数据:空

4

1 回答 1

2

在您使用的代码中,有两个按钮 onclick 处理程序调用: dispatchTakePictureIntent(int actionCode)

一个按钮用枚举调用它,ACTION_TAKE_PHOTO_B而另一个调用用枚举调用ACTION_TAKE_PHOTO_S

如果您要传入,则返回的意图中ACTION_TAKE_PHOTO_B的预期结果是.datanull

原因是在dispatchTakePictureIntent调用intent之前MediaStore.ACTION_IMAGE_CAPTURE,会根据actionCode传入的额外设置一个intent参数:

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

根据ACTION_IMAGE_CAPTURE 的文档

调用者可能会传递一个额外的 EXTRA_OUTPUT 来控制该图像将被写入的位置。如果 EXTRA_OUTPUT 不存在,则在额外字段中将小尺寸图像作为位图对象返回。

因此,由于EXTRA_OUTPUT正在设置参数,因此您的图像将被写入磁盘,而不是在意图中作为数据返回。要获取文件位置,您可以 mCurrentPhotoPath在启动意图之前检查写入的内容。

于 2012-11-08T23:10:04.173 回答