如何在Android 11上删除文件夹?

问题描述 投票:0回答:3

我有疑问,如何在 Android 11(或 10)上删除文件夹?

Stack 上有很多关于如何做到这一点的答案,但没有任何效果。

此代码在 Android 5 上适用于我:

 public static boolean deleteDir(File dir) {
      if (dir.isDirectory()) {
           String[] children = dir.list();
           for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                     return false;
                }
           }
      }

      // The directory is now empty so delete it
      return dir.delete();
 }

在最新版本的 Android 上它不起作用。我注意到有些应用程序可以做到这一点,所以我认为这是可能的。有什么答案吗?

java android delete-file
3个回答
2
投票

自 Android 10 和 11 以来,Android 在改变文件访问权限模型方面做了很多工作。首选方法是使用 Scoped Storage APIs

许多旧文件读/写权限已失效,将不再起作用。如果它们确实继续工作,则必须向 Google 证明您需要它们的原因,然后通过 Google 的安全批准。仅当您的应用程序被分类为文件浏览器应用程序等时,您才会获得批准。

基本上,新模型是使用Android的文件浏览器来读取/写入/更新用户选择的特定文件,并将其余的文件管理工作交给Google的第一方应用程序。您获得的访问权限取决于用户在第一方文件浏览器中选择的内容。然后,您将收到一个 URI,并具有执行预期操作(例如读/写等)的适当权限...

您可能会发现此视频很有用:

https://www.youtube.com/watch?v=RjyYCUW-9tY


0
投票

你尝试过 Context.deleteFile() 吗?

getApplicationContext().deleteFile(filename);

0
投票

删除ExternalFilesDir中的所有文件

fun removeAllFilesInExternalFilesDir(context: Context, folder: String) {
    context.getExternalFilesDir(folder)?.listFiles()?.forEach {
        it.delete()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.