【问题标题】:Is it possible to programmatically access Download folder on Android Q (SDK >= 29)?是否可以以编程方式访问 Android Q (SDK >= 29) 上的下载文件夹?
【发布时间】:2020-02-26 14:13:35
【问题描述】:

我想列出 下载 文件夹中的所有文件.txt,然后允许用户选择一个并阅读其内容。我的minSdkVersion16,但是我遇到这个问题是因为我的Android 是Q (29)。

我尝试了什么:

显然Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 会为 SDK

getExternalStoragePublicDirectory 说:

当应用以 Build.VERSION_CODES.Q 为目标时,从此方法返回的路径不再可供应用直接访问。通过迁移到 Context#getExternalFilesDir(String)MediaStoreIntent#ACTION_OPEN_DOCUMENT 等替代方案,应用可以继续访问存储在共享/外部存储上的内容。

所以:

  • getExternalFilesDir 返回/storage/emulated/0/Android/data/com.mypackage/files/Download。这个路径没用,我预计它会返回/storage/emulated/0/Download,这是下载文件所在的位置。

  • 我没能对MediaStore.Downloads 做点什么。我检查了documentation,上面写着“特别是,如果您的应用想要访问 MediaStore.Downloads 集合中的文件,而该文件不是您的应用创建的,则必须使用存储访问框架。”。所以,我认为它对我不起作用。

  • 在我的概念中,IntentStorage Access Framework 需要用户使用文件管理器浏览目录和文件,这不是我想要的。

简而言之:

是否可以在 Android Q (SDK >= 29) 中以编程方式 列出.txt 下载的文件?如果有,怎么做?

【问题讨论】:

标签: java android kotlin android-storage


【解决方案1】:

是否可以在 Android Q (SDK >= 29) 中以编程方式列出 .txt 下载的文件?

不是由其他应用创建的,这似乎是您的意图。

最接近的是,如果您使用 ACTION_OPEN_DOCUMENT_TREE 并要求用户在外部存储上打开 Downloads/ 树...而您无法在 Android R 上执行此操作(至少通过 DP1)。

【讨论】:

猜你喜欢
  • 2010-12-15
  • 2010-10-27
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2020-05-23
  • 2021-12-05
  • 2012-01-10
  • 2011-12-25
相关资源
最近更新 更多