Android - 在WebView.loadUrl()之前在LocalStorage上保存值

Bug*_*0id 10 javascript android local-storage android-webview

在WebView上加载URL之前,我想在浏览器LocalStorage中设置一个值.

到目前为止,设置此值的唯一方法是在加载页面之后.这是我如何设置值:

browser.setWebViewClient(new WebViewClient() {

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

我确实试图覆盖该方法onPageStarted(),但不存储该值.

如何在通话前设置此键/值browser.loadUrl()?url/page取决于此值,因此我需要在加载页面之前设置该值.

Bas*_*ein 5

你可以做的是设置一个重定向到javascript实际的URL并加载javascript加重定向使用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); 
Run Code Online (Sandbox Code Playgroud)

请注意,您可能需要先将其保存到文件中才能运行:请参阅如何将javascript重定向加载到android webview中?