这个问题可能是由于保存拍摄的照片时没有正确设置文件路径所导致的。为了解决这个问题,可以在Activity中调用以下方法,确保URI已正确设置:
private Uri createImageUri(){
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = null;
try {
imageFile = File.createTempFile(
imageFileName,
".jpg",
storageDir
);
} catch (IOException e) {
e.printStackTrace();
}
return FileProvider.getUriForFile(this, "com.example.fileprovider", imageFile);
}
然后在启动拍照Intent时,使用此URI:
Uri photoUri = createImageUri();
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(captureIntent, REQUEST_IMAGE_CAPTURE);
在onActivityResult()方法中更新ImageView时,使用相同的URI:
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
imageView.setImageURI(photoUri);
}
}
这应该可以解决FileNotFoundException问题。