【发布时间】:2021-02-27 22:20:34
【问题描述】:
我想做一个资源管理器应用。举个粗略的例子,我有一个简单的文件管理器应用程序,它显示了我手机的文件系统:
当我通过 USB 插入手机时,我从计算机的文件资源管理器中得到了相同的结果:
所以我在我的 AndroidManifest.xml 文件中添加了一些权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
当然,我确保向用户询问权限(虽然我不确定我是否应该请求 Manifest.permission.WRITE_EXTERNAL_STORAGE 权限,但我也希望能够写,但是授权弹出窗口没有提到读/写,它只是要求访问存储):
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_CODE)
}
但后来我试图获取根文件夹的内容,屏幕截图上的那个,我试图用这种方式打开一些:
Environment.getDataDirectory().listFiles() // Is null
Environment.getRootDirectory().listFiles() // Isn't the correct folder
Environment.getExternalStorageDirectory().listFiles() // Null
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).listFiles() // Null
我已经尝试了在这个 gist (https://gist.github.com/lopspower/76421751b21594c69eb2) 上找到的几乎所有有趣的路径,但它们都没有给我想要的东西......
【问题讨论】:
-
我很抱歉,但您的问题到底是什么?你想访问根文件夹吗?
-
Environment.getExternalStorageDirectory()是正确的位置。请记住,you need to modify your manifest to gain read access to that directory on Android 10+ 除了您已经设置的权限位。 -
@MouaadAbdelghafourAITALI 我正在尝试在代码中获取与屏幕截图相同的文件列表
-
@CommonsWare 就是这样,非常感谢!但是,如果我正确理解这是遗留系统,那么获得相同结果的正确方法是什么?我也尝试过使用 Context 对象,但没有结果...
-
@MarkKeen 非常感谢,我会看的,这个系统很头疼
标签: android permissions