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 24ClipData.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);
}
}
}
}