Android - сохранить значение в LocalStorage до WebView.loadUrl()

Прежде чем загружать URL-адрес в WebView, я хочу установить значение внутри браузера LocalStorage.

До сих пор единственный способ, которым мне удалось установить это значение, - это после загрузки страницы. Вот как я могу установить значение:

browser.setWebViewClient(new WebViewClient() {

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

Я попытался переопределить метод onPageStarted(), но значение не сохраняется.

Как установить этот ключ/значение перед вызовом browser.loadUrl()? URL-адрес зависит от этого значения, поэтому мне нужно установить значение перед загрузкой страницы.

Ответ 1

Что вы можете сделать, это установить перенаправление в 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); 

Имейте в виду, что вам, возможно, потребуется сохранить это в файл перед его работой: см. Как загрузить перенаправление javascript в веб-просмотр андроида?