在PhoneGap中,我使用
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);来访问文件系统。
在我的华硕平板电脑中,它没有external sdcard(我没有插入任何可移动设备),所以我认为文件系统根指向internal sdcard。然而,在我的HTC Desire HD中,数据是写入external sdcard的。(因为数据只驻留在microSD卡中。)
那么事实是什么呢?我在W3C文档中看不到任何线索,也许我遗漏了什么……
PS:两个android版本都是ICS(冰激凌三明治)。
发布于 2013-05-06 23:26:02
虽然PhoneGap的FileAPI旨在镜像HTML5规范,但它实际上是W3C文档的自定义实现。You can find the docs specific to their API here.虽然它在大多数情况下都可以使用,但在web和每个设备上的实现方式之间存在一些细微的差异。存储位置就是其中之一。
要了解PhoneGap如何处理持久性存储,我必须深入研究Cordova源代码。This file here contains the methods used by the PhoneGap FileAPI.相关代码块从第871行开始。基本上,API会调用Environment.getExternalStorageState()。如果返回Environment.MEDIA_MOUNTED,表示有一个用于存储的removable or non-removable SD card,则该接口返回的FileSystem是挂载存储的根目录,使用Environment.getExternalStorageDirectory()。这解释了您在具有内部和外部SD卡的设备之间看到的行为差异,两者都被系统视为挂载的外部存储。如果您遇到没有任何外部存储的设备,即!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED),则返回的FileSystem的根将是internal storage中的"data/data/packageName“,类似于调用Context.getFilesDir(),它通常返回类似于"data/data/packageName/files”的内容。
https://stackoverflow.com/questions/16399465
复制相似问题