[英]Is it possible to programmatically access Download folder on Android Q (SDK >= 29)?
我想列出下载文件夹中的所有文件.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
下载的文件? 如果是这样,如何?
是否可以在 Android Q (SDK >= 29) 中以编程方式列出 .txt 下载的文件?
不是由其他应用程序创建的,这似乎是您的意图。
最接近的是,如果您使用ACTION_OPEN_DOCUMENT_TREE
并要求用户打开外部存储上的Downloads/
树...而您不能在 Android R 上这样做(至少通过 DP1)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.