我想列出下载文件夹中所有
当应用程序的目标版本为Build.VERSION_CODES.Q时,从此方法返回的路径不再直接对应用程序可访问。应用程序可以通过迁移到替代方案(如Context#getExternalFilesDir(String)、MediaStore或Intent#ACTION_OPEN_DOCUMENT)来继续访问存储在共享/外部存储上的内容。
.txt
文件,然后允许用户选择一个并阅读其内容。我的minSdkVersion
是16
,但因为我的Android版本是Q(29),所以遇到了这个问题。
我尝试过的:
显然,Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
可以解决SDK <= 29的问题。但是,我没有测试它,因为我首先想查看一种适用于Android Q的解决方案。
getExternalStoragePublicDirectory说:当应用程序的目标版本为Build.VERSION_CODES.Q时,从此方法返回的路径不再直接对应用程序可访问。应用程序可以通过迁移到替代方案(如Context#getExternalFilesDir(String)、MediaStore或Intent#ACTION_OPEN_DOCUMENT)来继续访问存储在共享/外部存储上的内容。
getExternalFilesDir
返回/storage/emulated/0/Android/data/com.mypackage/files/Download
。这个路径是没有用的,我期望它返回/storage/emulated/0/Download
,那里是下载文件的位置。我无法使用
MediaStore.Downloads
做某些事情。我查看了文档,它说“特别是,如果您的应用程序想要访问您的应用程序未创建的 MediaStore.Downloads 集合中的文件,则必须使用存储访问框架。”。因此,我认为它对我不起作用。在我的概念中,
Intent
和Storage Access Framework
需要用户使用文件管理器浏览目录和文件,这不是我想要的。
简而言之:
在 Android Q(SDK >= 29)中,是否有可能以编程方式列出已下载的 .txt
文件?如果可以,如何实现?