Не могу удалить файл на Android

Проблема :

Я хочу удалить видеофайл из внутренней памяти устройства Android.

Ниже код находится в классе, который расширяет BaseAdapter, а метод file.delete() возвращает false

    File fdelete = new File(videolist.get(position).getVideopath());
                        Log.d(TAG,"Path to delete : "+videolist.get(position).getVideopath());
                        if (fdelete.exists()) {
                            Log.d(TAG,"DELETE EXIST");
                            if (fdelete.delete()) {
                                Log.d(TAG,"DELETED");
                            } else {
                                Log.d(TAG,"NOT DELETED");
                            }
                        }

videolist.get(position).getVideopath() возвращает это:


person Vuqar Samed    schedule 25.05.2019    source источник
comment
У вас есть разрешение WRITE_EXTERNAL_STORAGE? Вы запросили его во время выполнения, используя requestPermissions()?   -  person CommonsWare    schedule 25.05.2019
comment
Да, я делал. Я выполняю другие операции, такие как получение видеофайлов из внутренней памяти. И это работает нормально.   -  person Vuqar Samed    schedule 25.05.2019
comment
Действительно ли файл удаляется? IOW, если вы используете Device Explorer в Android Studio или adb shell для просмотра этого каталога, файл исчез после вызова delete()?   -  person CommonsWare    schedule 25.05.2019
comment
Я проверил, что видеофайл в памяти устройства не удален.   -  person Vuqar Samed    schedule 25.05.2019
comment
Я отредактировал вопрос о том, что отрезанный код находится в классе, который расширяет BaseAdapter.   -  person Vuqar Samed    schedule 25.05.2019


Ответы (1)


Попробуй это

    private void deleteMedia(final String advName) {
    File path = Environment.getExternalStorageDirectory();
    File directory = new File(path.getAbsolutePath() + "/your directory name");

    File[] files = directory.listFiles(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.contains(advName);
        }
    });
    if (files != null) {
        for (int i = 0; i < files.length; i++) {
            File file = files[i];
            file.delete();
        }
    }
}
person Dharmender Manral    schedule 25.05.2019
comment
Как передать значение в advname sad.txt или просто sad - person Vuqar Samed; 25.05.2019
comment
Только текст грустный - person Dharmender Manral; 25.05.2019
comment
Это не работает. Я проверил путь к файлу для цикла. Это похоже на: /storage/emulated/0/Download/asd.txt. Но file.delete() не работает. - person Vuqar Samed; 26.05.2019