Java 捕获照片意图结果代码

Java 捕获照片意图结果代码,java,android,Java,Android,我如何检测用户是拍照并选择它(使用相机上的“确认”按钮),还是打开相机,拍照并移除它(使用相机上的“取消”按钮) 当用户拍照时,我正在将该图片加载到ImageView中。如果用户点击确认按钮,则一切正常,但如果用户不想要该图片并决定点击取消按钮,则ImageView变为空白 这是我的相机意图: void capturePhoto() { // ImagePicker.pickImage(this, "Select your image:"); Intent tak

我如何检测用户是拍照并选择它(使用相机上的“确认”按钮),还是打开相机,拍照并移除它(使用相机上的“取消”按钮)

当用户拍照时,我正在将该图片加载到ImageView中。如果用户点击确认按钮,则一切正常,但如果用户不想要该图片并决定点击取消按钮,则
ImageView
变为空白

这是我的相机意图:

void capturePhoto() {
//        ImagePicker.pickImage(this, "Select your image:");

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File f = null;

            try {
                f = setUpPhotoFile();
                mCurrentPhotoPath = f.getAbsolutePath();
                Uri photoURI = Uri.fromFile(f);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
            } catch (IOException e) {
                e.printStackTrace();
                f = null;
                mCurrentPhotoPath = null;
                pictureUri = null;
            }

            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }
    }
在ActivityResult中,在这两种情况下,结果代码始终为1。(注意结果是-1),我不知道为什么

这就是我如何使用Glide将
image
设置为
ImageView

Glide.with(this).load(mCurrentPhotoPath).centerCrop().into(imageView);
有什么建议吗


谢谢

您只需要在onActivityresult中传递if语句 因为,如果您直接使用该URI或您使用的任何没有任何帧集的内容,则会导致用户取消它,所以只需按照给定的方式执行即可

 //if needed than
//public static final int RESULT_OK = -1;
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);


    if (resultCode == RESULT_OK) {
        switch (requestCode) {

        case REQUEST_TAKE_PHOTO:

                   //do your stuff here
        }
    }
您可以使用下面的代码

 static final int REQUEST_IMAGE_CAPTURE = 1;

    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            if (isCameraPermissionEnabled()) {
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.CAMERA},
                        1);
            }
        }
    }

    public boolean isCameraPermissionEnabled() {

        return !(Build.VERSION.SDK_INT >= 23 &&
                ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED );
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            mBitmap = (Bitmap) extras.get("data");
            imageView.setBackground(new BitmapDrawable(getResources(),mBitmap));
        }
    }

//有关详细信息,请参见我使用字符串mCurrentPhotoPath设置照片,而不是位图。resultCode为1,而不是RESULT\u OK。我不知道为什么我忘记了结果的声明\u ok check Now实际上你不必声明,因为这是活动中的默认值你必须先尝试我从这个网站获取代码,但我保存了完整尺寸的照片。