/ *捕获图像方法* /
private void captureImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//Start intent with Action_Image_Capture
file = CameraUtils.getfile(Home.this);
fileUri = CameraUtils.getOutputMediaFileUri(Home.this);//get fileUri from CameraUtils
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);//Send fileUri with intent
startActivityForResult(intent, CAMERA_REQUEST_CODE);//start activity for result with CAMERA_REQUEST_CODE
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CAMERA_REQUEST_CODE:
try {
//When image is captured successfully
if (resultCode == RESULT_OK) {
Log.d("Main", file.getAbsolutePath());
} else
Toast.makeText(this, R.string.cancel_message, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
错误
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 clip={text/uri-list U:file:///storage/emulated/0/Android/data/com.camera_demo/files/Pictures/Camera/IMG_20180402_151052.jpg} (has extras) }
答案 0 :(得分:0)
检查您是否获得了正确的文件URI。你应该获得如下的URI:
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
picUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", createImageFile());
}else{
picUri = Uri.fromFile(createImageFile());
}
createImageFile()
就像:
public File createImageFile() {
// Create an image file name
Date date = new Date();
String timeStamp = Const.dateFormat.format(date);
timeStamp = timeStamp + "_" + Const.imgTimeFormat.format(date);
String imageFileName = "IMG_" + timeStamp + ".jpg";
File albumF = getAlbumDir();
File imageF = new File(albumF, imageFileName);
return imageF;
}