【问题标题】:onActivityResult getting called as soon as camera intent is sent发送相机意图后立即调用 onActivityResult
【发布时间】:2013-05-16 16:18:06
【问题描述】:

我正在使用相机 Intent 在我的应用中启动相机,但一旦 Intent 被触发,onActivityResult 就会被触发,我什至还没有拍照。

当我拍照时,选择它并返回我的活动,onActivityResult 根本不会被调用

这是我启动相机的方法

PackageManager pm = getPackageManager();
    if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        File tempDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"Mobile Map");
        if (!tempDir.exists()) {
            if (!tempDir.mkdir()) {
                Toast.makeText(this,
                        "Please check SD card! Image shot is impossible!",
                        Toast.LENGTH_SHORT).show();
            }
        }

        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",Locale.US).format(new Date());
        File mediaFile = new File(tempDir.getPath() + File.separator+ "IMG_" + timeStamp + ".jpg");

        photoUri = Uri.fromFile(mediaFile);
        camera.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
        startActivityForResult(camera, CAMERA_REQUEST);
    } else {
        Toast.makeText(this,"This device does not have a rear facing camera",Toast.LENGTH_SHORT).show();
    }

为什么 onActivityResult 仅在相机 Intent 启动后才被调用?

【问题讨论】:

  • 您说:“一旦(相机)意图被触发,onActivityResult 就会被触发”,但是“当我拍照时...... onActivityResult 根本不会被调用”。是哪一个?
  • @Neoh 两者,它在发送意图时被调用,但是当我真正希望它被调用时,就像我拍照时它不会被调用
  • 调用onActivityResult()时,resultCode参数的值是多少?
  • @DavidWasser resultCode 是 0 并且 requestCode 是我在启动相机的意图中给出的代码,因此它来自我的相机意图

标签: android android-intent android-camera-intent


【解决方案1】:

问题在于,在我的清单中,我将活动设置为 singleInstance,而 startActivityForResult 显然不喜欢这样

【讨论】:

  • 是的,如果你的activity有launchMode="singleInstance"那意味着当你启动camera activity时,camera activity会被启动到另一个task中。您无法使用startActivityForResult() 在不在同一任务中的 2 个活动之间进行通信。这实际上是我的思路所在,也是我问关于结果代码的问题的原因。结果代码 0 为 RESULT_CANCELED,表示您对 startActivityForResult() 的调用由于某种原因立即被取消。
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多