Android 2.3.6 + Phonegap + localStorage

时间:2012-09-10 16:17:13

标签: android cordova local-storage

我正在使用phonegap& amp; jQuery mobile。

我有来自QA的报告,在三星Galaxy Y(android 2.3.6)上 - localStorage为null,因此导致应用程序崩溃。

据我所知,应该从Android版本2.0+支持localStorage,我甚至在DroidGap类中添加了以下代码:

super.appView.getSettings().setAllowFileAccess(true);        
super.appView.getSettings().setDatabaseEnabled(true);
super.appView.getSettings().setDatabasePath("/data/data/" + appView.getContext().getPackageName() + "/databases/");
super.appView.getSettings().setDomStorageEnabled(true);    

所以我很难理解为什么localStorage似乎不支持这个特定的设备。我被告知它在使用相同版本的Android的其他设备上运行正常!

是否有任何我不知道的设置或其他可能导致localStorage为空的事情?

3 个答案:

答案 0 :(得分:2)

你可以从android SDK安装文件夹的platform tools文件夹运行logcat,在我的机器上这是:C:\Program Files (x86)\Android\android-sdk\platform-tools

只需从命令提示符运行adb logcat即可。你会得到很多信息。

我创建了一个测试应用程序并在一个Galaxy Y上运行它,该代码在onDeviceReady函数中有以下代码。使用logcat,它显示不支持的消息

if (typeof window.localStorage == 'object')
{
    // localStorage is supported
    console.log('**HelloGap: localStorage is supported');
}
else
{
    // localStorage is not supported
    console.log('**HelloGap: localStorage is NOT supported');
}

您可以过滤来自logcat的消息,但我无法使其工作,所以我只是将输出重定向到文本文件并搜索**HelloGap

答案 1 :(得分:1)

事实证明,通过将Phonegap(cordova)从1.8.1升级到2.0.0可以解决问题....

答案 2 :(得分:0)

我遇到了2.3.6和localStorage的问题所以我和Cordova 2.2.0一起测试了2.3.3和2.2 AVD图像,似乎支持localStorage但是应该调用window.localStorage而不是没有窗口范围但是适用于Android 4.x和桌面Chrome的功能。但是还有一个问题是,当应用程序重新启动时,localStorage不会持久化,而且我在Hydratation中看到同样的问题,它会一次又一次地提供应用程序重新安装,所以我认为这会受到相同的bug的影响。