在SDK 29(又称Android_Q)中,使用方法Environment.getExternalStorageDirectory()
访问外部存储已被弃用,并不再返回可访问的文件。
getExtenalStoragePublicDirectory(String type)
此方法从API级别29开始已过时。为了提高用户隐私保护,直接访问共享/外部存储设备已被弃用。当应用程序目标为Build.VERSION_CODES.Q时,此方法返回的路径不再可以直接由应用程序访问。应用程序可以继续通过迁移到替代方案,如Context#getExternalFilesDir(String),MediaStore或Intent#ACTION_OPEN_DOCUMENT来访问存储在共享/外部存储中的内容。
但是,使用Context#getExternalFilesDir(String)
将返回一个位于您的App-Data文件夹内的文件夹。该文件夹在卸载应用程序或清除数据时被删除。
但是考虑到像WhatsApp或Facebook Messenger这样的应用程序如何保存其备份和下载,它们使用外部存储并创建自定义文件夹以存储其数据。
这样的应用程序将如何迁移?是否有新的方法?
我的应用程序是备份所有笔记并将其存储到一个文件夹中,以便在应用程序删除或清除数据后进行后续还原。在SDK 29中,我不能再使用这样的方法。
ACTION_OPEN_DOCUMENT_TREE
将选择权留给用户。这并不总是让用户决定数据存储在哪里的好选择。这也使得重新找到那个文件夹变得困难。 我想这是一种方式,但我会继续寻找。 - A-Android UCG