在android中浏览文件系统

在android中浏览文件系统,android,Android,我正在开发一个应用程序,用户可以在其中选择文件夹。文件夹可以位于外部内存或可移动存储器中。所以我需要显示设备的外部内存和可移动存储的根文件夹。我试过了 context.dataDir context.filesDir context.externalCacheDir context.getExternalFilesDir(null) 但它们都指向myapp特定的外部/内部存储,而不是设备ex:/storage/emulated/0/Android/data/com.example.myapp/

我正在开发一个应用程序,用户可以在其中选择文件夹。文件夹可以位于外部内存或可移动存储器中。所以我需要显示设备的外部内存和可移动存储的根文件夹。我试过了

context.dataDir
context.filesDir
context.externalCacheDir
context.getExternalFilesDir(null)
但它们都指向myapp特定的外部/内部存储,而不是设备ex:/storage/emulated/0/Android/data/com.example.myapp/files 所以我一直在想如何在android中显示文件系统的根位置


注意:stackoverflow中的其他相关问题的答案使用了
环境。getExternalStorageDirectory()
这是一个被抹黑的问题,android文档建议使用MediaStore,但不清楚如何使用它浏览文件系统

android已经更新了其共享存储策略,允许应用程序根据文件类型/可见性而不是文件在文件系统中的位置来请求文件。因此,要构建需要传统文件系统浏览功能的应用程序,我们需要请求
管理\u外部存储
权限,并使用
操作\u管理\u所有文件\u访问权限
意图操作将用户引导到系统设置页面,在该页面中,用户可以启用允许访问以管理所有文件。这仅适用于具有以下用例的应用程序

  • 文件管理器
  • 备份和恢复
  • 防病毒应用程序
  • 文档管理应用程序

该不推荐使用的函数为您提供了所需的根目录,因此请使用它。它只提供了
/storage/emulated/0
,这与
/storage/emulated/0/Android/data/com.example.myapp/files
的开头相同。您可以得出这样的结论:您不需要弃用的文件夹,因为其他文件夹中已经有了所有文件夹。如果您只是启动了“操作意图”树“打开文档”,则用户可以选择任何文件夹。如果您需要可移动存储,请查看
上下文。getExternalFilesDirs(null)