Я создал приложение, которое позволяет вам сохранять фотографию с определенным именем, процесс: 1-Вы пишете имя 2-Вы пишете тип операции 3-Вы нажимаете снимок 4-Вся информация в 1 & 2вставляется в имя и переносит вас в камеру.
Когда вы делаете снимок, все работает нормально, но если вы закрываете камеру вместо того, чтобы сделать снимок, создается файл-призрак с размером 0байт, и когда вы открываете его с галереей, он говорит, что файл не существует.
int imgNbr = 0;
values = new ContentValues();
do{
file = new File(Environment.getExternalStorageDirectory() + "/" + containerId.getText().toString() + "_" + dateInfo + "_" + eventType + "_" + imgNbr + ".png");
Log.d("TAG", Integer.toString(imgNbr));
values.put(MediaStore.Images.Media.DATA, Environment.getExternalStorageDirectory() + "/" + containerId.getText().toString() + "_" + dateInfo + "_" + eventType + "_" + imgNbr + ".png");
values.put(MediaStore.Images.Media.TITLE, containerId.getText().toString() + "_" + dateInfo + "_" + eventType + "_" + imgNbr+ ".png");
imgNbr++;
}
while(file.exists());
Log.d("TAG", "OUT OF WHILE WITH VALUE" + Integer.toString(imgNbr-1));
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, PICTURE_RESULT);
Я пытался удалить его вручную по результату активности, но он не работает, все журналы возвращают false
@Override @Nullable
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == PICTURE_RESULT){
Toast.makeText(getApplicationContext(),"Imagen guardada correctamente",Toast.LENGTH_SHORT).show();
}
else if (resultCode == RESULT_CANCELED && requestCode == PICTURE_RESULT){
//file.delete();
Log.d("TAG", "file.isFile()" + file.isFile());
Log.d("TAG", "file.canRead()" + file.canRead());
Log.d("TAG", "file.delete()" + file.delete());}}