mcf*_*oft 5 android android-4.4-kitkat
我读了很多关于KITKAT和防止写入辅助外部SD卡的内容.这似乎是谷歌的一项新政策.我还阅读了关于在/ externalsdcard/Android/data /下存储应用程序数据的内容.
现在我的问题,因为我无法重现或测试:如果不允许应用程序直接在<secundary external sdcard>下写入数据,那么是否可以将应用程序的数据存储在<secundary external sdcard>/Android/data下/ <app package name>?
如果可能的话.有人可以共享代码示例吗?
切勿假设可移动辅助存储大于主内部存储。在大多数现代设备上,内部存储容量可达 64 GB,但 SD 卡可小至 1 MB(如果用户插入小型旧卡)。
使用当前的 API 无法区分哪一个是“外部”的。
所以正确的方法是使用 Context.getExternalFilesDirs(),它返回所有外部存储,您可以在没有任何权限的情况下存储应用程序特定的文件。
使用 StatFs 查找可用的最大存储空间,并将数据写入其中。
final File[] dirs = context.getExternalFilesDirs(null); //null means default type
//find a dir that has most of the space and save using StatFs
Run Code Online (Sandbox Code Playgroud)
正如文档所说,
返回所有外部存储设备上应用程序特定目录的绝对路径,应用程序可以在其中放置其拥有的持久文件。这些文件是应用程序的内部文件,通常作为媒体对用户来说不可见。
这与 getFilesDir() 类似,卸载应用程序时这些文件将被删除,但有一些重要的区别:
外部文件并不总是可用:如果用户将外部存储安装到计算机上或将其删除,它们就会消失。这些文件没有强制执行安全措施。
此处返回的外部存储设备被视为设备的永久部分,包括模拟外部存储和物理媒体插槽,例如电池仓中的 SD 卡。返回的路径不包括瞬态设备,例如 USB 闪存驱动器。
应用程序可以将数据存储在任何或所有返回的设备上。例如,应用程序可能会选择将大文件存储在具有最多可用空间(通过 StatFs 衡量)的设备上。
无需任何权限即可读取或写入返回的路径;调用应用程序始终可以访问它们。辅助外部存储设备上这些路径之外的写入访问不可用。
返回的第一个路径与 getExternalFilesDir(String) 相同。如果存储设备不可用,则返回的路径可能为空。
| 归档时间: |
|
| 查看次数: |
3511 次 |
| 最近记录: |