2012-10-11 10 views
18

Zrobiłem aplikację na Androida/Phonegap i działa dobrze na wszystkich urządzeniach z kilkoma wersjami systemu operacyjnego Android, z wyjątkiem niektórych telefonów Gingerbread (2.3). Używam Phonegap 1.9.Nielegalny wyjątek dostępu do LocalStorage na Androida Gingerbread

Podczas debugowania kodu zdałem sobie sprawę, że za każdym razem, gdy używam metod HTML5 localStorage.getItem() i localStorage.setItem(), używam JavaScript.

Jak mogę włączyć funkcje localStorage na tych urządzeniach z Androidem?

Odpowiedz

8

Nielegalny Wyjątkiem był spowodowany JSON.parse() metody, gdy .getItem() zwraca wartość null. Po prostu zachowaj ostrożność, aby to sprawdzić. Android 2.3, HTML5 localStorage i Phonegap działają teraz doskonale.

0

sprawdzić kod na WebSettings Twojego Webview za, tj sprawdzić następujące elementy nazywane są:

WebSettings settings = webView.getSettings(); 

settings.setJavaScriptEnabled(true); 

settings.setDatabaseEnabled(true); 

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

settings.setDomStorageEnabled(true); 
+0

Ciężko mi było przez próbowanie dowiedzieć się, gdzie są te ustawienia. Pod phonegapem musimy wywołać super.appView.getSettings() w celu uzyskania dostępu do nich. Konieczne jest jednak wywołanie super.init() przed wykonaniem tego. W przeciwnym razie appView przyjdzie null. Pozwól mi spróbować zmienić te wartości, tak jak powiedziałeś. –

+0

Testowane już. Wszystkie te ustawienia są prawdziwe, ale nie mogę zapisać/pobrać niczego. –

0

Ta walidacja działa dla mnie. :) (javascript w Androidzie 2.3 używam phonegapa)

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

    } 
Powiązane problemy