2012-10-11 25 views
18

Tôi đã tạo một ứng dụng Android/Phonegap và ứng dụng chạy tốt trên tất cả các thiết bị có một số phiên bản hệ điều hành Android, ngoại trừ một số điện thoại Gingerbread (2.3). Tôi đang sử dụng Phonegap 1.9.Ngoại lệ truy cập bất hợp pháp với LocalStorage trên Android Gingerbread

Gỡ lỗi mã, tôi nhận ra một illegal access exception trên Javascript, mỗi lần tôi sử dụng phương thức HTML5 localStorage.getItem()localStorage.setItem().

Làm cách nào để bật tính năng localStorage trên các thiết bị Android này?

Trả lời

8

Trường hợp ngoại lệ bất hợp pháp là do JSON.parse() phương pháp khi .getItem() trả về null. Chỉ cần cẩn thận để xác nhận nó. Android 2.3, HTML5 localStorage và Phonegap hiện đang hoạt động hoàn hảo.

0

Kiểm tra mã cho WebSettings của WebView của bạn, tức là kiểm tra như sau này được gọi là:

WebSettings settings = webView.getSettings(); 

settings.setJavaScriptEnabled(true); 

settings.setDatabaseEnabled(true); 

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

settings.setDomStorageEnabled(true); 
+0

Tôi đã có một thời gian khó khăn bằng cách cố gắng tìm ra vị trí của các cài đặt đó. Dưới Phonegap, chúng ta cần gọi super.appView.getSettings() để truy cập chúng. Tuy nhiên, cần phải gọi super.init() trước khi thực hiện. Nếu không, appView sẽ rỗng. Hãy để tôi thử bằng cách thay đổi những giá trị đó như bạn đã nói. –

+0

Đã thử nghiệm rồi. Tất cả các cài đặt đó đều đúng, nhưng tôi không thể lưu trữ/truy xuất bất kỳ thứ gì. –

0

Xác thực này phù hợp với tôi. :) (javascript trong android 2.3 sử dụng phonegap)

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

    } 
Các vấn đề liên quan