我想列出所有文件.txt
in the Download文件夹,然后允许用户选择一个并阅读其内容。我的minSdkVersion
is 16
,但我遇到了这个问题,因为我的Android是Q(29)。
我尝试过的:
显然Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
将为 SDK
获取外部存储公共目录 https://developer.android.com/reference/android/os/Environment#getExternalStoragePublicDirectory(java.lang.String) says:
当应用程序以 Build.VERSION_CODES.Q 为目标时,应用程序无法再直接访问从此方法返回的路径。应用程序可以通过迁移到替代方案(例如,上下文#getExternalFilesDir(字符串) https://developer.android.com/reference/android/content/Context#getExternalFilesDir(java.lang.String), 媒体商店 https://developer.android.com/reference/android/provider/MediaStore, or 意图#ACTION_OPEN_DOCUMENT https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_DOCUMENT.
So:
getExternalFilesDir
回报/storage/emulated/0/Android/data/com.mypackage/files/Download
。这条路没有用,我预计它会返回/storage/emulated/0/Download
,这是下载的文件所在的位置。
我没能做某事MediaStore.Downloads
。我检查了文档 https://developer.android.com/training/data-storage/shared/media#request-permissions它说“特别是,如果您的应用程序想要访问 MediaStore.Downloads 集合中您的应用程序未创建的文件,则必须使用存储访问框架。”。所以,我认为它对我不起作用。
在我的观念里,Intent
and Storage Access Framework
需要用户使用文件管理器浏览目录和文件,这不是我想要的。
简而言之:
是否可以列出.txt
下载的文件以编程方式在 Android Q(SDK >= 29)中?如果是这样,怎么办?
是否可以在 Android Q (SDK >= 29) 中以编程方式列出 .txt 下载的文件?
不是由其他应用程序创建的,这似乎是您的意图。
最接近的是如果你使用ACTION_OPEN_DOCUMENT_TREE
并要求用户打开Downloads/
外部存储上的树...并且您无法在 Android R 上执行此操作(至少通过 DP1)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)