Java 写入\u外部\u存储可能的目标文件夹
当拥有Java 写入\u外部\u存储可能的目标文件夹,java,android,android-permissions,android-download-manager,Java,Android,Android Permissions,Android Download Manager,当拥有写入外部存储权限时,我希望有权写入整个文件系统(例如/sdcard,/STORAGE/simulated/0,/STORAGE/sdcard0,/mnt/sdcard,…) 但由于内部FS结构不同,我无法真正判断目标设备上允许哪些文件夹 目前,我使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DOWNLOADS)来获取下载文件夹,但我认为这不是唯一允许使用的文件夹 因此,下面有两个问题: 有没有
写入外部存储
权限时,我希望有权写入整个文件系统(例如/sdcard
,/STORAGE/simulated/0
,/STORAGE/sdcard0
,/mnt/sdcard
,…)
但由于内部FS结构不同,我无法真正判断目标设备上允许哪些文件夹
目前,我使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DOWNLOADS)
来获取下载文件夹,但我认为这不是唯一允许使用的文件夹
因此,下面有两个问题:
使用
Environment.getExternalStorageDirectory()
获取可用的外部存储目录
您将获得Android外部存储目录。如果用户已将此目录装载到其计算机上、已从设备中删除或发生其他问题,则当前可能无法访问此目录。您可以使用getExternalStorageState()
确定其当前状态
注意:这里的“外部”一词不要混淆。这个目录
最好将其视为介质/共享存储。它是一个
可以保存相对大量的数据,并且可以跨多个服务器共享
所有应用程序(不强制执行权限)。传统上这是
SD卡,但它也可以作为
与受保护的内部存储器不同的设备,可以
作为文件系统安装在计算机上
对于android,只有一个外部存储,它通过
getExternalStorageDirectory()
返回,因此默认情况下应该使用它
但是,公共挂载点通常对运行应用程序的用户进程具有
rw
权限,因此您也可以在那里编写。获得根权限,您几乎可以在任何地方进行写操作。使用时,您不必担心您提到的各种路径(/sdcard
,/storage/simulated/0
,/storage/sdcard0
,/mnt/sdcard
)。通常,它们都指向同一个地方。这只返回一个目录,它是唯一允许我使用的目录吗?这是根目录。您可以读取/写入此目录或其子目录中的任何内容。我提到了我的问题,例如在我的三星Galaxy Nexus中有许多装载点,并且以某种方式我可以读取/写入其他目录。