是否可以通过编程方式访问 Android Q (SDK >= 29) 上的下载文件夹?
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 说:
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.
所以:
getExternalFilesDir
returns /storage/emulated/0/Android/data/com.mypackage/files/Download
。这个路径没有用,我希望它是 return /storage/emulated/0/Download
,这是下载文件所在的位置。
我没能用 MediaStore.Downloads
做点什么。我检查了 documentation,它说 "In particular, if your app wants to access a file within the MediaStore.Downloads collection that your app didn't create, you must use the Storage Access Framework."。所以,我认为它对我不起作用。
在我的概念中,Intent
和 Storage Access Framework
需要用户使用文件管理器浏览目录和文件,这不是我想要的。
简而言之:
是否可以在 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).
我想列出 下载 文件夹中的所有文件 .txt
,然后允许用户选择一个文件并阅读其内容。我的minSdkVersion
是16
,但是我遇到这个问题是因为我的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.
所以:
getExternalFilesDir
returns/storage/emulated/0/Android/data/com.mypackage/files/Download
。这个路径没有用,我希望它是 return/storage/emulated/0/Download
,这是下载文件所在的位置。我没能用
MediaStore.Downloads
做点什么。我检查了 documentation,它说 "In particular, if your app wants to access a file within the MediaStore.Downloads collection that your app didn't create, you must use the Storage Access Framework."。所以,我认为它对我不起作用。在我的概念中,
Intent
和Storage Access Framework
需要用户使用文件管理器浏览目录和文件,这不是我想要的。
简而言之:
是否可以在 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).