Intereting Posts
Как включить java-скрипт в webView В службе ProjectScopeServices отсутствует проблема с настройкой типа фабрики Изменение источника данных для воспроизведения звука с использованием существующего MediaPlayer? Максимальное количество 9000 символов в Android TextView? Прохождение layout_weight ссылки из измерений (размеры) Класс R не генерируется Проблемы совместимости приложений для Android с Nexus 6 AppCompat не поддерживает текущие функции темы – ничего не работает В android 4.4, прокручивание приложения из последних задач постоянно убивает приложение своим сервисом. Любая идея почему? Студия Android не распознает исходные папки Build.gradle и проект libs Почему InsertHelper устарел? Мягкая клавиатура не присутствует, не может скрыть клавиатуру – Appium android (Android Xamarin) Получить значение строки ресурса вместо int Используйте CountDown Timer или сверните свой собственный на основе Handler на Android

Android – Чтение данных HTML5 localStorage прямо с Java

У меня есть простое Android-приложение с WebView. WebView установлен для перехода на сайт, который использует функцию localStorage JavaScript.

У меня уже установлен мой набор WebSettings, позволяющий DomStorage:

webSettings.setJavaScriptEnabled(true); ebSettings.setDomStorageEnabled(true); String dbPath = this.getApplicationContext().getDir("database", MODE_PRIVATE).getPath(); webSettings.setDatabasePath(dbPath); 

Мне нужен способ, которым мой код Java может читать переменную, хранящуюся с помощью механизма localStorage, то есть:

JavaScript делает это:

  var storage = window.localStorage; storage.setItem("name", "Hello World!"); 

Как я могу узнать значение «name» из localStorage из Java-кода?

    Да можно прочитать значение localStorage в java (Android).

    Используйте этот плагин https://www.npmjs.com/package/cordova-plugin-nativestorage, в котором используется собственное хранилище.

    – для этого мы должны установить значение в кордове

      NativeStorage.setItem("reference", obj, setSuccess, setError); function setSuccess(obj){ } function setError(obj){ } 

    И в Anroid Java File, чтобы получить это значение:

      SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE); System.out.println("********--------- shared pref values... " + sharedPreferences.getString("myid", "no value")); 
     yourWebView.setWebChromeClient(new WebChromeClient(){ public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d(tag, "That's my local storage value =" + message); return false; }; }); (...) yourWebView.loadURL("javascript:alert(localStorage.getItem(\"name\"))"); 

    В вашей деятельности

     webView.addJavascriptInterface(myInterface, "JSInterface"); 

    Класс интерфейса Javascript

     class myInterface { @JavascriptInterface public void getVariable(string fromLocalStorage) { //your code } } 

    В javascript

     window.JSInterface.getVariable(localStorage.getItem("variableName"))