Подтвердить что ты не робот

Android: удалите изображение с SD-карты

Мне нужно удалить изображение с SD-карты, выбранной пользователем. В моей деятельности после выбора пользователем изображения из галереи я выполняю этот код:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Utils.imgUri = data.getData();
            Utils.imgPath = getPath(Utils.imgUri);
            File file = new File(Utils.imgPath);
            boolean deleted = file.delete();
        }
    }
}

где метод getPath:

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    if(cursor!=null){
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    else return null;
}

Изображения правильно удалены, но в галерее все еще остается предварительный просмотр удаляемого изображения. Когда я нажимаю на него, загружается черное изображение.

Итак, как обновить предварительные просмотры галереи после удаления некоторых изображений из кода приложения?

4b9b3361

Ответ 1

Разрешено добавление:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

Это снова запустит службу MediaScanner, которая должна удалить удаленное изображение из кэша устройства.

та же проблема здесь

Ответ 2

Зачем вам это делать?

Вы можете сделать это так просто:

getContentResolver().delete(Utils.imgUri, null, null);

Ответ 3

Установили ли вы разрешение <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> в файле манифеста?

Ответ 4

Вы уверены, что путь к файлу верен? Поскольку способ фактического удаления должен быть в порядке, см. Этот поток SO: Как удалить файл с SD-карты?

Должен ли/mnt/действительно быть там? Кроме того, есть ли у вас разрешения на удаление файлов из хранилища? (Android.permission.WRITE_EXTERNAL_STORAGE)

Ответ 5

в параметре "данные" у вас тоже есть Uri, просто "data.getUri()". Кроме того, вы тестируете на реальных устройствах? если это так, и если это samsung, это не работает (см. этот поток).

Ответ 6

простая одна строка;)

 new File(uri.getPath()).delete();

и в манифесте должны использовать эти разрешения

android.permission.WRITE_EXTERNAL_STORAGE

Ответ 7

добавить код ниже в onDestroy

<сильные > если (myFile.exists())       myFile.delete();

и не забудьте добавить разрешение в файл Манифест

android.permission.WRITE_EXTERNAL_STORAGE