如何删除Android11上的文件夹?

How to delete a folder on Android 11?

我有疑问,如何删除 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 上它不起作用。我注意到有些应用程序可以做到这一点,所以我想这是可能的。有什么答案吗?

自 Android 10 和 11 以来,

Android 围绕文件访问做了很多更改权限模型。首选方法是使用 Scoped Storage APIs.

许多旧文件 read/write 权限处于生命支持状态,将不再有效。如果它们确实继续工作,则必须证明 Google 为什么需要它们,然后通过 Google 的安全批准。只有当您的应用被归类为文件浏览器应用等时,您才会获得批准。

基本上,新模型是使用 Android 的文件浏览器来访问 read/write/更新用户选择的特定文件,并将其余的文件管理推迟到Google 的 first-party 应用程序。您获得的访问权限基于用户在 first-party 文件浏览器中选择的内容。然后,您将使用适当的权限将 URI 返回给您的应用程序以执行预期的操作,例如 read/write/etc...

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

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

你试过 Context.deleteFile() 了吗?

getApplicationContext().deleteFile(filename);