совместно использовать localStorage через webView и CordovaWebView android

Я пытаюсь обмениваться данными в действии между webView и CordovaWebView. CordovaWebView, конечно, использует webView, и поэтому я не понимаю, почему данные, хранящиеся в localStorage в моем приложении phoneGap, не видны в простом webView, который загружает html-страницу из того же места, что и основное приложение. Я уже исследовал, что данные, хранящиеся в CordovaWebView, хранятся в файле /app_webview/Local Storage/file__0.localstorage, а данные хранятся в созданном экземпляре webView< /strong> хранится в файле /app_webview/Local Storage/__0.localstorage, поэтому я не могу получить доступ к данным. Я загружаю скрипт, хранящий данные в localStorage, в webView следующим образом:

webView.loadUrl("file:///android_asset/www/script.html");

Таким же образом загружается главная страница в CordovaWebView:

void loadUrlNow(String url) {
    if (LOG.isLoggable(LOG.DEBUG) && !url.startsWith("javascript:")) {
        LOG.d(TAG, ">>> loadUrlNow()");
    }
    if (url.startsWith("file://") || url.startsWith("javascript:") || Config.isUrlWhiteListed(url)) {
        super.loadUrl(url);
    }
}

где URL

file:///android_asset/www/index.html

Итак, почему в CordovaWebView localStorage сохраняется в файле

/app_webview/Local Storage/file__0.localstorage

И в веб-просмотре в файле

/app_webview/Local Storage/__0.localstorage

person tsubik    schedule 01.09.2014    source источник


Ответы (1)


К сожалению, странное поведение localStorage на Android является преднамеренным. Вы можете решить проблему на нативной стороне, используя библиотеку, подобную этой (сам не пробовал):

Или вы можете использовать JavaScript для заполнения localStorage с помощью параметра executeScript при открытии InAppBrowser и читать localStorage при его закрытии.

Это хорошо работает для небольших объемов данных. Однако отладка больших сумм может быть довольно раздражающей.

person krik    schedule 18.02.2015