Pebble: enable localStorage

LocalStorage native functions are overridden to keep each watchface's settings separated. It's possible the bind method do not work on older versions of android.
This commit is contained in:
Daniele Gobbetti 2016-11-14 17:51:33 +01:00
parent d8145a52f9
commit 1a22752b98
2 changed files with 15 additions and 2 deletions

View File

@ -1,5 +1,16 @@
//clay stores the values in the localStorage if (window.Storage){
localStorage.clear(); var prefix = GBjs.getAppUUID();
GBjs.gbLog("redefining local storage with prefix: " + prefix);
Storage.prototype.setItem = (function(key, value) {
this.call(localStorage,prefix + key, value);
}).bind(Storage.prototype.setItem);
Storage.prototype.getItem = (function(key) {
//GBjs.gbLog("I am about to return " + prefix + key);
return this.call(localStorage,prefix + key);
}).bind(Storage.prototype.getItem);
}
function loadScript(url, callback) { function loadScript(url, callback) {
// Adding the script tag to the head as suggested before // Adding the script tag to the head as suggested before

View File

@ -69,6 +69,8 @@ public class ExternalPebbleJSActivity extends GBActivity {
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptEnabled(true);
//needed to access the DOM //needed to access the DOM
webSettings.setDomStorageEnabled(true); webSettings.setDomStorageEnabled(true);
//needed for localstorage
webSettings.setDatabaseEnabled(true);
JSInterface gbJSInterface = new JSInterface(this); JSInterface gbJSInterface = new JSInterface(this);
myWebView.addJavascriptInterface(gbJSInterface, "GBjs"); myWebView.addJavascriptInterface(gbJSInterface, "GBjs");