2015-10-27 3 views
10

Bevor ich eine URL auf WebView lade, möchte ich einen Wert im Browser LocalStorage setzen.Android - Wert auf LocalStorage vor WebView.loadUrl() speichern

Bis jetzt ist die einzige Möglichkeit, diesen Wert zu setzen, nachdem die Seite geladen wurde. Dies ist, wie ich den Wert einstellen:

browser.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView view, String url) { 
       loadUrl("javascript: LocalStorage.set('namespace', 'key', 'value');"); 
     } 
} 

Ich versuche, hätte die Methode onPageStarted(), aber der Wert außer Kraft setzen wird nicht gespeichert.

Wie kann ich diesen Schlüssel/Wert vor dem Anruf browser.loadUrl() setzen? Die URL/Seite hängt von diesem Wert ab, daher muss ich den Wert vor dem Laden der Seite festlegen.

+0

warum nicht SharedPreferences mit (zum Beispiel) sehen, wenn Sie wollen die Dinge speichern ...? – OWADVL

+0

Ich muss Daten in Webview speichern, so kann es JavaScript lesen. Ich sehe nicht, wie SharedPreferences mein Problem lösen können. – Bugdr0id

Antwort

5

Was Sie tun können, ist eine Umleitung in die javascript auf die tatsächliche URL und laden Sie die JavaScript-plus-Umleitung mit webview.loadData().

String injection = "<html><head><script type='javascript'>LocalStorage.set('namespace', 'key', 'value');window.location.replace('YOUR_URL_HERE');</script></head><body></body></html>"; 
webview.loadData(injection, "text/html", null); 

Beachten Sie aber, dass Sie, dass in einer Datei speichern können, müssen Sie zuerst, bevor es funktioniert: How to load a javascript redirect into android webview?