Android - чтение данных HTML5 localStorage непосредственно из Java - PullRequest
7 голосов
/ 26 февраля 2012

У меня есть простое приложение для 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?

Ответы [ 4 ]

2 голосов
/ 25 августа 2016

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

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

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

    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"));
0 голосов
/ 11 июня 2019

Для записи данных:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
     webView.evaluateJavascript("localStorage.setItem('"+ key +"','"+ val +"');", null);
} else {
     webView.loadUrl("javascript:localStorage.setItem('"+ key +"','"+ val +"');");
}

Для чтения и оповещения данных:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
     webView.evaluateJavascript("window.alert(localStorage.getItem('"+ key +"'));", null);
} else {
     webView.loadUrl("javascript:window.alert(localStorage.getItem('"+ key +"'));");
}

И не забудьте включить JavaScript Android WebvView

webView.getSettings().setJavaScriptEnabled(true);
0 голосов
/ 31 марта 2016

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

webView.addJavascriptInterface(myInterface, "JSInterface");

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

class myInterface
{

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

}

в javascript

window.JSInterface.getVariable(localStorage.getItem("variableName"))
0 голосов
/ 28 июня 2012
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\"))");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...