Android 11 - 在没有遗留请求的情况下读取所有应用程序的 Android/data 目录文件管理器/备份目的

问题描述

我想读取 Android/data,以便我可以提取文档以进行备份。 Android 11 具有禁止/限制此功能的更改,但仍有可能吗?我不想使用遗留方法(如果可能的话)。

根据有关 MANAGE_EXTERNAL_STORAGE 权限的 Manage all files on a storage device,Google 似乎声称现在应该不可能(至少使用这种方法):

被授予此权限的应用仍然无法访问属于其他应用的特定于应用的目录,因为这些目录在存储卷上显示为 Android/data/ 的子目录。

https://developer.android.com/training/data-storage/manage-all-files https://developer.android.com/about/versions/11/privacy/storage#other-apps-data

此处storage#other-apps-data谷歌还表示应用无法再访问其他应用 Android/data

访问外部存储上的特定于应用程序的目录 在 Android 11 上,应用无法再访问外部存储中任何其他应用的专用、应用特定目录中的文件

这里在 stackoveflow Thoryia 向我们展示了如何请求许可。

但是我们可以使用它(或任何其他方法)读取那些被禁止的其他应用程序数据文件夹,Android/data/* 吗?

Android 应用程序“Total Commander”执行此操作(在 Android 11 上),并且它似乎使用 StorageAccessFramework Intent Intent.ACTION_OPEN_DOCUMENT_TREE 来访问文件(根据弹出的 gui 进行猜测),但我也没有设法弄清楚如何让它工作。其可能的 Total Commander 使用传统方法

公关请求我在我的 OneDrive 上有 Total Commander (TC) 的屏幕截图。

我强烈怀疑 TC 只是使用 target-29 访问方法,我在这里找到了它的权限列表,但找不到它的目标版本:Aptoide: TC v3.21

解决方法

您的问题与您提出的问题具有相同的解决方案

CreateMap<FinalsViewModel,Finals>();
CreateMap<FinalViewMode,Final>();

// you can also use `.ForMemeber()` to do more thing.

为此,我已经有了解决方案。

为 DCIM 和 Android 等尝试过,但从未为 Android/data 尝试过。

但这也有效!

您不能将它用于经典文件方式,而只能用于存储访问框架。

我们将操作从 StorageManager..getPrimaryStorageVolume().createOpenDocumentTreeIntent() 获得的 INITIAL_URI。

"How can i let ACTION_OPEN_DOCUMENT_TREE open in a predifined directory?".