启动相机意图时未调用 onActivityResult?

Posted

技术标签:

【中文标题】启动相机意图时未调用 onActivityResult?【英文标题】:onActivityResult not called when launching camera intent? 【发布时间】:2013-10-25 08:00:43 【问题描述】:

我有一个点击按钮相机活动的活动。有时 onActivityResult 被调用,有时不被调用。即使在重新启动设备后,onActivityResult 也不会被调用,也不会重新启动当前活动。这种奇怪的行为有什么解决办法吗?

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) 
        String imageUri = data.toURI();
        Uri uri = Uri.parse(imageUri);
        try 
            mBitmap = Media.getBitmap(getContentResolver(), uri);
         catch (FileNotFoundException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
         catch (IOException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
        // if result is ok returns the bitmap
        // mBitmap = (Bitmap) data.getExtras().get("data");
        mImageView.setImageBitmap(mBitmap);
        new Thread(postTheImage).start();
     else 
        Toast.makeText(getApplicationContext(), "Error during capturing the image", Toast.LENGTH_SHORT).show();
    


@Override
    public void onClick(View v) 
        // TODO Auto-generated method stub
        if (v.getId() == R.id.capture_image_button) 
            // Open the camera to capture the image
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

            startActivityForResult(cameraIntent, CAMERA_REQUEST);
        
    

【问题讨论】:

您是否缺少 onActivityResult 上的覆盖指令? 会不会引起这么大的问题。它有时会工作并突然停止工作。 @Pork 'n' bunny 不起作用,有时不会调用 onActivityResult。 你能说明它是如何失败的吗?这只是模拟器吗? 嗯,我正在设备上试用。 Htc one x 并且在打开相机 5-6 次后 onActivityResult 方法不会被调用。我不知道为什么。甚至系统日志似乎也没有给出任何解释。 zi 在 samsung S3 中尝试了代码并遇到了同样的问题 【参考方案1】:

您没有向相机活动提供所需的信息。您需要为其提供文件 URI。

请参考以下

onActivityResult returned from a camera, Intent null

【讨论】:

这个答案不正确。您不需要提供文件 URI。一般来说,OP的代码应该可以正常工作。您可以请求相机拍照。它会将Intent 参数中照片的缩略图返回给onActivityResult()。不幸的是,链接的问题没有得到正确回答:-(

以上是关于启动相机意图时未调用 onActivityResult?的主要内容,如果未能解决你的问题,请参考以下文章

android方向 - 意图问题(相机)

从概览屏幕恢复应用时未调用 onActivityResult(最近)

在 viewDidLoad 外部调用方法时未显示相机胶卷中的最后一张图像

Android:调用相机意图后活动被破坏

Android:调用相机意图后活动被破坏

Android:如何使用相同的相机意图捕获多张照片