【发布时间】:2020-02-26 14:13:35
【问题描述】:
我想列出 下载 文件夹中的所有文件.txt,然后允许用户选择一个并阅读其内容。我的minSdkVersion 是16,但是我遇到这个问题是因为我的Android 是Q (29)。
我尝试了什么:
显然Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 会为 SDK
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做点什么。我检查了documentation,上面写着“特别是,如果您的应用想要访问 MediaStore.Downloads 集合中的文件,而该文件不是您的应用创建的,则必须使用存储访问框架。”。所以,我认为它对我不起作用。在我的概念中,
Intent和Storage Access Framework需要用户使用文件管理器浏览目录和文件,这不是我想要的。
简而言之:
是否可以在 Android Q (SDK >= 29) 中以编程方式 列出.txt 下载的文件?如果有,怎么做?
【问题讨论】:
-
在 Android Q 中可以。 stackoverflow.com/questions/60413633/…
-
There is a share feature in my app, so I am using a FileProvider.这与您想要的访问权限无关。
标签: java android kotlin android-storage