Как я могу удалить все файлы с или отформатировать внешнюю SD-карту программно в Android? - PullRequest
0 голосов
/ 21 января 2020

Я много гуглил и искал здесь, в StackOverflow, ответ на мой вопрос. Я видел много сообщений о рекурсивном методе удаления файлов (, например , , и , ), но ни один из них работал на меня. Я использую этот метод, чтобы найти мою SD-карту (которая /storage/0000-0000).

private void wipeSDCards() {
    File storage = new File("/storage");
    File[] storageSubDirs = storage.listFiles();
    for (File storageSubDir : storageSubDirs) {
        try {
            boolean storageSubDirIsEmulated = Environment.isExternalStorageEmulated(storageSubDir);
            boolean storageSubDirIsRemovable = Environment.isExternalStorageRemovable(storageSubDir);

            if (!storageSubDirIsEmulated && storageSubDirIsRemovable) {
                deleteStuff(storageSubDir);
            }
        } catch (IllegalArgumentException iae) {
            LoggingUtil.i(MyClass.class, String.format(Locale.US, "FAILED ON: %s", storageSubDir.getAbsolutePath()));
        }
    }
}

private void deleteStuff(File fileOrDirectory) {
    // things I have tried ....
}

Чтобы удалить файлы на SD-карте, я попытался:

File fileToDelete = new File('path.to.file');
fileToDelete.delete();

Но это не работает Я пытался:

Files.delete(fileToDelete.toPath());

Но это не работает. Я пытался:

application.getContentResolver().delete(uri, null, null);

Но это тоже не работает. Я поместил это заявление для печати перед всеми моими попытками удаления:

Log.e("LOOK HERE: ", String.format(Locale.US, "Your Application %s delete this file (%s)", (fileOrDirectory.canWrite() ? "can" : "can NOT"), fileOrDirectory.getName()));

И всегда получал обратно Your Application can NOT delete this file (path.to.file). Кажется, у меня нет разрешения на удаление файлов на SD-карте, хотя я могу это сделать через файловый браузер Windows.

Итак, разрешено ли приложению удалять содержимое SD-карты? Если да, то как же go сделать это? Как насчет способа просто отформатировать SD-карту, я бы тоже это взял.

Кроме того, пожалуйста, не спрашивайте "почему вы хотите это сделать" ... Я просто делаю.

...