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 库

在 Gingerbread 中实现拖放

HttpURLConnection 不解压缩 Gzip

在 Android 上拦截来电