android - 在android中浏览文件系统
问题描述
我正在开发一个用户可以选择文件夹的应用程序。这些文件夹可以在外部存储器或可移动存储中。所以我需要显示设备的外部存储器和可移动存储的根文件夹。我试过了
context.dataDir
context.filesDir
context.externalCacheDir
context.getExternalFilesDir(null)
但它们都指向特定于 myapp 的外部/内部存储,而不是设备前:/storage/emulated/0/Android/data/com.example.myapp/files 所以我坚持如何在 android 中显示文件系统的根位置?
注意:stackoverflow 中的其他相关问题的答案已Environment.getExternalStorageDirectory()
被贬低,android 文档建议使用 MediaStore,但不清楚如何使用它浏览文件系统
解决方案
Android 已更新其共享存储政策,允许应用根据文件类型/可见性而不是文件系统中的位置来请求文件。因此,要构建需要传统文件系统浏览功能的应用程序,我们需要请求MANAGE_EXTERNAL_STORAGE
权限并使用ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
意图操作将用户引导到系统设置页面,他们可以在其中启用允许访问以管理所有文件。这仅适用于具有以下用例的应用程序
- 文件管理器
- 备份还原
- 防病毒应用程序
- 文档管理应用
https://developer.android.com/training/data-storage/manage-all-files#all-files-access-google-play
推荐阅读
- ios - 在同一个 UICollectionView 中处理多个行为
- python-3.x - 如何在进入下一页时提取数据并将其作为数据框保存到 csv 文件中?我使用的代码只输出 1 页
- javascript - 如何修复 Vue 警告]:未知的自定义元素:
? - java - 如何在jFrame中循环jPanel?
- visual-studio-code - 如何卸载 Python 语言服务器(由 VS Intellicode 扩展安装)
- servicestack - 流利的验证器检查数据库中是否存在具有 ID 的实体
- angular - Aws Cognito + Angular 7 - 如何同时创建用户并将用户分配给用户组
- php - 中继器只显示一行
- text-to-speech - 如何关闭文本到语音中的 .mp3 文件,如详细信息所示?
- android - 在片段内显示底部导航栏