Before I load a URL on WebView i want to set a value inside browser LocalStorage.
Till now the only way I did managed to set this value is after the page is loaded. This is how I can set the value:
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
loadUrl("javascript: LocalStorage.set('namespace', 'key', 'value');");
}
}
I did try to override the method onPageStarted()
, but the value is not stored.
How can I set this key/value before the call browser.loadUrl()
? The url/page depends on this value, so I need to set the value before I load the page.
You can use WebViewClient.onPageStarted() for this.
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
String js = "window.localStorage.setItem('key', 'value');";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(js, null);
} else {
webView.loadUrl("javascript:" + js);
}
}
});
What you can do is set a redirect into the javascript
to the actual url and load the javascript plus redirect using 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);
Be aware though that you might need to save that to a file first before it works: see How to load a javascript redirect into android webview?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With