Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在Android中获取摄像头捕获的Uri,但在图像捕获后应用程序返回主屏幕_Java_Android - Fatal编程技术网

Java 尝试在Android中获取摄像头捕获的Uri,但在图像捕获后应用程序返回主屏幕

Java 尝试在Android中获取摄像头捕获的Uri,但在图像捕获后应用程序返回主屏幕,java,android,Java,Android,我以前用过的代码 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = Helper.getOutputMediaFileUri(Helper.MEDIA_TYPE_IMAGE); intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); startActivityFor

我以前用过的代码

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                fileUri = Helper.getOutputMediaFileUri(Helper.MEDIA_TYPE_IMAGE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
                startActivityForResult(
                        intent,
                        ApplicationConstants.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
这将导致API 24
ClipData.item.getUri以下的应用程序出错

所以我把方法改成这个,

btncamera.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, Helper.getOutputMediaFileUri(Helper.MEDIA_TYPE_IMAGE));
                } else {
                    File file = new File(Environment.getExternalStorageDirectory().getPath()+ "/photoTemp.jpg");

                    Uri photoUri = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", file);
                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                    startActivityForResult(
                            intent,
                            ApplicationConstants.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
                }
            }
        });

onClick()
if
语句中,代码块是否正确?您在
intent
中放入了一些数据,但您不调用
startActivityForResult()
我调用,如果您可以看到该语句的底部<代码>startActivityForResult(意图、应用程序实例、捕获\图像\活动\请求\代码)是,但这在一个单独的代码块中,即
else
块。换句话说,
if
块不能访问
else
块,如果条件为真,我理解,但这是在API高于N的情况下测试的,因此它跳过了第一部分,因为我的手机是API 29,仍然无法工作。
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == ApplicationConstants.CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
                Intent intent = new Intent(FaceView.this, HandleImage.class);
                intent.putExtra("Mode", this.getMode());
                intent.putExtra("Uri", fileUri);
                startActivity(intent);
            } else if (requestCode == ApplicationConstants.RESULT_LOAD_IMAGE
                    && data != null) {
                Uri uri = data.getData();
                Intent intent = new Intent(FaceView.this, HandleImage.class);
                intent.putExtra("Mode", this.getMode());
                intent.putExtra("Uri", uri);
                startActivity(intent);
            }

        }
    }
}