【问题标题】:Where does LocalFileSystem.PERSISTENT point to?LocalFileSystem.PERSISTENT 指向哪里?
【发布时间】:2013-04-30 06:01:19
【问题描述】:

在PhoneGap中,我使用

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);

访问文件系统。
在我的华硕平板电脑中,它没有external sdcard(我没有插入任何可移动设备),所以我认为文件系统根目录指向internal sdcard。然而,在我的 HTC Desire HD 中,数据被写入了external sdcard。 (因为数据只存在于 microSD 卡中。)
那么真相是什么?我在 W3C 文档中看不到任何线索,也许我遗漏了什么……

PS:两个安卓版本都是ICS(冰淇淋三明治)。

【问题讨论】:

    标签: html cordova local-storage android


    【解决方案1】:

    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 用于存储,则API 返回的FileSystem 是已安装存储的根目录,使用Environment.getExternalStorageDirectory()。这解释了您在具有内部和外部 SD 卡的设备之间看到的行为差异,两者都被系统视为已安装的外部存储。如果遇到没有任何外部存储的设备,即!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED),则返回的FileSystem的根将是internal storage中的“data/data/packageName”,类似于调用Context.getFilesDir(),通常返回类似“data/数据/包名/文件”。

    【讨论】:

    • 你真是太棒了!但我有一个问题:第 868 行 fs.put("root", getEntry("/data/data/" + cordova.getActivity().getPackageName() + "/cache/")); 是否意味着系统创建了一个名为 /data/data/ +~ +/cache/ 的目录?它为用户创建一个空间作为存储空间,就像用户在网络上而不是使用移动设备一样?
    • 顺便说一句:您如何找到源代码?...太复杂了,不知道哪个文件负责此功能...
    • 是的。该行特别是用于临时存储,因此他们创建了缓存目录来表示这一点。对于任何 Android 应用程序、PhoneGap 或原生应用程序,“/data/data/packageName”被创建为该应用程序文件的私有空间。在这种情况下,PhoneGap 只是使用该目录。
    • 如果您在此处向下滚动一点cordova.apache.org/#contribute,您可以找到每个平台的PhoneGap 实现的源代码我没有找到真正的指南,但如果您查看docs.phonegap.com/en/2.7.0/index.html您可以看到 PhoneGap 提供的不同 API,并尝试将文件与其功能配对。
    • 所以。内部存储实际上指向“/data/data”,任何额外的sdcard都称为外部存储,无论它是否可移动(安装在机器上我们看不到它)? sdcard 的名称具有误导性...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2013-09-25
    相关资源
    最近更新 更多