Я использую камеру для захвата изображений в моем приложении. Проблема в том, что приложение иногда падает (то есть не всегда) после фотографирования. На LogCat не отображается сообщение об ошибке, а только процесс завершается. Вот пример кода
public void openCameraIntent(String question, int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
this.question = question;
this.position = position;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
photoFile = ImageUtils.createPhotoFile();
if (photoFile != null) {
pathToFile = photoFile.getAbsolutePath();
Uri photoUri = FileProvider.getUriForFile(this, "com.app.my.provider", photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, 1);
}
}
} else {
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CAMERA_OPEN);
}
}
public static File createPhotoFile() {
String name = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File storageDir = getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File image = null;
try {
image = File.createTempFile(name, ".jpg", storageDir);
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
uploadWithTransferUtility(Utils.convertBitmapFile(this, "aws", Utils.waterMark(this, Utils.fileToBitmap(pathToFile),
Utils.getDeviceName() + " " + Utils.timeStamp())));
}
}