获得WRITE_EXTERNAL_STORAGE
权限后,我希望有权在整个文件系统上进行编写(例如/sdcard
,/storage/emulated/0
,/storage/sdcard0
,{{1} },...)
但由于内部FS结构不同,我无法确定目标设备上允许的文件夹是什么。
目前我使用/mnt/sdcard
获取下载文件夹,但我认为这不是我唯一允许使用的文件夹。
接下来是两个问题:
答案 0 :(得分:2)
使用Environment.getExternalStorageDirectory()
获取可用的外部存储目录。
您将获得Android外部存储目录。如果用户已在其计算机上安装此目录,已从设备中删除或发生其他一些问题,则该目录当前可能无法访问。您可以使用getExternalStorageState()
确定其当前状态。
注意:不要在这里混淆“外部”这个词。这个目录 可以更好地被视为媒体/共享存储。它是一个文件系统 可以容纳相对大量的数据,并且可以共享 所有应用程序(不强制执行权限)。传统上这是 SD卡,但它也可以作为内置存储器实现 与受保护的内部存储区别的设备,可以是 作为文件系统安装在计算机上。
答案 1 :(得分:0)
对于android,只有一个外部存储,它通过getExternalStorageDirectory()
返回的存储,所以你应该默认使用它。
但是,公共挂载点通常对用户进程具有rw
权限,您的应用程序正在其中运行,因此您也可以在那里写入。获得root权限,你几乎可以在任何地方写。