9
votes

Android - Lecture HTML5 LocalStorage Données de Java

J'ai une application Android simple qui a une vision webview. Le webview est défini pour parcourir un site qui utilise la fonctionnalité localStorage de JavaScript.

J'ai déjà eu mes serveurs de sites Web pour permettre à Domstorage: p> xxx pré>

Ce dont j'ai besoin est une façon que mon code Java puisse lire une variable stockée à l'aide du mécanisme localStorage, IE.: P>

Le JavaScript le fait: P>

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


1 commentaires

Pas une solution unique ici fonctionne pour moi. Avez-vous eu de la chance?


4 Réponses :


0
votes
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\"))");

2 commentaires

Cela me donne: "Uncaught SecuritherError: Impossible de lire la propriété" localStorage "de" fenêtre ": l'accès est refusé pour ce document."


@Onheon je suis également confronté au même problème. L'avez-vous résolu?



0
votes

Dans votre activité

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


1 commentaires

Cela utilise JavaScript pour obtenir la valeur. J'ai besoin de mon application Android pour demander la valeur du navigateur, et non le navigateur de l'initier. Je ne peux pas appeler webview.loadrurl ou webview.evalatesjavascript en utilisant cette méthode car elle ne le fait jamais.



2
votes

Oui possible à lire la valeur localeStorage en Java (Android).

Utilisez ce plugin https://www.npmjs.com/package/cordova-plugin-nativestorage qui utilise un stockage natif. P>

-Pour que nous devons définir la valeur dans Cordova P> xxx pré>

et dans le fichier Java Anroid pour obtenir cette valeur: p >

    SharedPreferences sharedPreferences = getSharedPreferences("MainActivity", MODE_PRIVATE);
    System.out.println("********---------    shared pref values...   " +  sharedPreferences.getString("myid", "no value"));


0 commentaires

0
votes

Pour écrire des données:

webView.getSettings().setJavaScriptEnabled(true);


0 commentaires