是否可以通过编程方式访问 Android Q (SDK >= 29) 上的下载文件夹?

Is it possible to programmatically access Download folder on Android Q (SDK >= 29)?

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

我试过的:

显然 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 可以解决 SDK <= 29 的问题。但是,我没有测试它,因为我想先查看 Android Q 的解决方案。

getExternalStoragePublicDirectory 说:

When an app targets Build.VERSION_CODES.Q, the path returned from this method is no longer directly accessible to apps. Apps can continue to access content stored on shared/external storage by migrating to alternatives such as Context#getExternalFilesDir(String), MediaStore, or Intent#ACTION_OPEN_DOCUMENT.

所以:

简而言之:

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

Is it possible to list the .txt downloaded files programmatically in Android Q (SDK >= 29)?

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

最接近的是如果你使用 ACTION_OPEN_DOCUMENT_TREE 并要求用户打开外部存储上的 Downloads/ 树......你不能在 Android R 上这样做(至少通过 DP1).