Android Gingerbread 上 LocalStorage 的非法访问异常
Posted
技术标签:
【中文标题】Android Gingerbread 上 LocalStorage 的非法访问异常【英文标题】:Illegal access exception with LocalStorage on Android Gingerbread 【发布时间】:2012-10-02 12:38:01 【问题描述】:我制作了一个 android/Phonegap 应用程序,它在具有多个 Android 操作系统版本的所有设备上运行良好,除了一些 Gingerbread (2.3) 手机。我正在使用 Phonegap 1.9。
调试代码,我在javascript上实现了一个illegal access exception
,每次使用html5的localStorage.getItem()
和localStorage.setItem()
方法。
如何在这些 Android 设备上启用localStorage
功能?
【问题讨论】:
【参考方案1】:这个验证对我有用。 :)(android 2.3 中的 javascript 使用 phonegap)
Storage.prototype.getArray = function(key)
if (this.getItem(key))
return JSON.parse(this.getItem(key))
else
//console.log("no error null value");
【讨论】:
【参考方案2】:检查您的 WebView 的 WebSettings 的代码,即检查以下调用:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDatabasePath(this.getApplicationContext()
.getDir("database", Context.MODE_PRIVATE).getPath());
settings.setDomStorageEnabled(true);
【讨论】:
我很难弄清楚这些设置在哪里。在 phonegap 下,我们需要调用 super.appView.getSettings() 来访问它们。但是,在执行此操作之前必须调用 super.init()。否则,appView 为空。让我尝试按照您所说的更改这些值。 已经测试过了。所有这些设置都是正确的,但我仍然无法存储/检索任何内容。【参考方案3】:当 .getItem() 返回 null 时,JSON.parse() 方法导致非法异常。只是要小心验证它。 Android 2.3、HTML5 localStorage 和 Phonegap 现在可以完美运行。
【讨论】:
以上是关于Android Gingerbread 上 LocalStorage 的非法访问异常的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 2.3 .X (Gingerbread) 及更低版本上修改 LayerDrawable 层
如何使用适用于 Gingerbread 和 Froyo 的 ICS UI 创建 Android 应用程序?
如何从 Android Gingerbread 中的 libmedia_jni 访问自己的 libmediaplayerservice 库