Я пытаюсь удалить изображение, которое я только что сохранил на устройстве.
У меня есть Uri, который я намеренно передаю действию, и я хочу использовать этот Uri для удаления изображения.
Uri разрешается в это
file:///data/user/0/com.example.jdapp/cache/cropped
Это код, который я получил из другого ответа stackoverflow, но он не работает:
private void deleteImage() {
Uri uri = (Uri) getIntent().getParcelableExtra("dest");
// File file = new File(uri.getPath());//create path from uri
// file.delete();
File fdelete = new File(getFilePath(uri));
if (fdelete.exists()) {
if (fdelete.delete()) {
Toast.makeText(actClassifyImage.this, "Deleted", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(actClassifyImage.this, "Not Deleted", Toast.LENGTH_LONG).show();
}
}
}
//getting real path from uri
private String getFilePath(Uri uri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String picturePath = cursor.getString(columnIndex); // returns null
cursor.close();
return picturePath;
}
return null;
}
В эту строку всегда возвращается нулевое значение
File fdelete = new File(getFilePath(uri));
Кто-нибудь знает, куда я иду? не так?
Спасибо