1

获得许可后,WRITE_EXTERNAL_STORAGE我希望有权在整个文件系统中写入(例如,,,,,... )/sdcard/storage/emulated/0/storage/sdcard0/mnt/sdcard

但由于不同的内部 FS 结构,我真的无法分辨目标设备上允许的文件夹。

目前我Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)用来获取下载文件夹,但我认为这不是我被允许使用的唯一文件夹。

所以接下来有两个问题:

  1. 有没有办法找出我可以用这种权限写哪些文件夹?
  2. 使用 DownloadManager 时,可能的目标文件夹是否与第一个问题一样?
4

2 回答 2

2

用于Environment.getExternalStorageDirectory()获取可用的外部存储目录。

您将获得 Android 外部存储目录。如果该目录已被用户安装在他们的计算机上、已从设备中删除或发生了其他问题,则该目录当前可能无法访问。您可以使用 确定其当前状态getExternalStorageState()

注意:不要被这里的“外部”这个词弄糊涂了。最好将此目录视为媒体/共享存储。它是一个文件系统,可以保存相对大量的数据,并且在所有应用程序之间共享(不强制执行权限)。传统上这是一张 SD 卡,但它也可以作为设备中的内置存储实现,与受保护的内部存储不同,并且可以作为文件系统安装在计算机上。

于 2013-08-16T08:04:59.157 回答
0

对于android,只有一个外部存储,它通过返回的getExternalStorageDirectory()那个,所以你应该默认使用它。

但是,公共挂载点通常对运行您的应用程序的用户进程具有rw权限,因此您也可以在那里编写。获得root权限,你几乎可以在任何地方写。

于 2013-08-16T08:12:29.670 回答