2015-10-27 13 views
10

Prima di caricare un URL su WebView, desidero impostare un valore nel browser LocalStorage.Android: salva il valore su LocalStorage prima di WebView.loadUrl()

Fino ad ora l'unico modo in cui sono riuscito a impostare questo valore è dopo che la pagina è stata caricata. Questo è come posso impostare il valore:

browser.setWebViewClient(new WebViewClient() { 

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

ho provato l'override del metodo onPageStarted(), ma il valore non viene memorizzato.

Come posso impostare questa chiave/valore prima della chiamata browser.loadUrl()? L'url/pagina dipende da questo valore, quindi ho bisogno di impostare il valore prima di caricare la pagina.

+0

perché non utilizzare SharedPreferences (per esempio), se si desidera memorizzare le cose ...? – OWADVL

+0

Ho bisogno di salvare i dati all'interno di Webview, quindi la pagina Web javascript può leggerlo. Non vedo come SharedPreferences possa risolvere il mio problema. – Bugdr0id

risposta

5

Che cosa è possibile fare è impostare un reindirizzamento nel javascript nell'URL effettivo e caricare il reindirizzamento javascript plus utilizzando 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); 

Attenzione però che potrebbe essere necessario per salvare quella di un file prima che funziona: vedi How to load a javascript redirect into android webview?