2012-10-11 21 views
18

Ho creato un'app Android/PhoneGap, e funziona bene su tutti i dispositivi con diverse versioni del sistema operativo Android, ad eccezione di alcuni telefoni Gingerbread (2.3). Sto usando Phonegap 1.9.Eccezione di accesso illegale con LocalStorage su Android Gingerbread

Debug del codice, ho realizzato uno illegal access exception su Javascript, ogni volta che utilizzo i metodi HTML5 localStorage.getItem() e localStorage.setItem().

Come abilitare le funzioni localStorage su tali dispositivi Android?

risposta

8

L'eccezione illegale è stata causata da JSON.parse() metodi quando il .getItem() restituisce null. Fai solo attenzione a convalidarlo. Android 2.3, HTML5 localStorage e PhoneGap funzionano perfettamente ora.

0

Controllare il codice per WebSettings del WebView, cioè controllare quanto segue sono chiamati:

WebSettings settings = webView.getSettings(); 

settings.setJavaScriptEnabled(true); 

settings.setDatabaseEnabled(true); 

settings.setDatabasePath(this.getApplicationContext() 
     .getDir("database", Context.MODE_PRIVATE).getPath()); 

settings.setDomStorageEnabled(true); 
+0

Ho avuto un momento difficile cercando di capire dove sono quelle impostazioni. Sotto PhoneGAP, dobbiamo chiamare super.appView.getSettings() per accedervi. Tuttavia, è necessario chiamare super.init() prima di farlo. Altrimenti, appView diventa nullo. Lascia che provi cambiando quei valori come hai detto tu. –

+0

Già testato. Tutte queste impostazioni sono vere, ma non riesco a memorizzare/recuperare nulla ancora. –

0

Questa convalida funziona per me. :) (javascript in Android 2.3 utilizzare PhoneGap)

Storage.prototype.getArray = function(key) { 
     if (this.getItem(key)) { 
      return JSON.parse(this.getItem(key)) 
     } else { 
      //console.log("no error null value"); 
     } 

    } 
Problemi correlati