Intereting Posts
Нет идентификатора для моего Android UI Testing Phonegap Media error code 1 воспроизведение локального mp3-файла в Android-устройстве После того, как кнопки изменения ориентации на виджете не отвечают Изменить путь для android sdk и avd manager, чтобы не указывать на c: \ users Запретить прокрутку для ввода при заполнении приложения Android Phonegap Ионный в Windows: Android SDK установлен. Все еще получите "Ошибка: Пожалуйста, установите цель Android:" android-22 " Ошибка после добавления зависимостей к Action Bar Sherlock в Android Studio 0.5.8 Ошибка NDK-сборки NDK Как получить завершающий ответ на setImageUrl с библиотекой Volley и NetworkImageView? Unit Тестирование приложения для Android в Bamboo, Hudson или на любых серверах CI Является ли OAuth на мобильном телефоне с помощью прокси-сервера слишком много неприятностей? Сроки запуска Android Low Memory killer Как один интерфейс может использоваться для различных задач фонового андроида? Как включить автоматические обновления для альфа-тестеров в Google Play Store Как я могу реализовать разрешения на работу с Android 6.0 Runtime в существующем приложении

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"))