一旦发送相机意图就会调用onActivityResult

tyc*_*czj 5 android android-intent android-camera-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();
    }
Run Code Online (Sandbox Code Playgroud)

为什么onActivityResult在相机意图启动后才会被调用?

tyc*_*czj 5

问题在于我的清单中我设置了活动singleInstance,显然startActivityForResult不喜欢

  • 是的,如果您的活动具有`launchMode =“ singleInstance”`,这意味着当您启动摄像头活动时,摄像头活动将被启动到另一个任务中。您不能在两个不在同一任务中的活动之间使用“ startActivityForResult()”进行通信。那实际上就是我的思路,以及为什么我问关于结果代码的问题。结果代码为0的结果为“ RESULT_CANCELED”,表示您由于某种原因而立即取消了对startActivityForResult()的调用。 (2认同)