Ответ 1
Прежде всего, я считаю маловероятным, что вы действительно хотите получать доступ к файлам HTML и JavaScript из активов, поскольку активы не могут (и не должны) обновляться после того, как приложение было упаковано и подписано. Это означает, что с вашими HTML и JavaScript в активах вы не можете их обновить. Подход к решению этой проблемы заключается в том, чтобы сохранить HTML и JavaScript во внутреннем или внешнем хранилище и использовать его оттуда.
Во-вторых, если вы используете этот подход, который я только что объяснил, вы больше не сможете использовать метод WebView.loadUrl()
, но вместо этого вам нужно будет использовать метод WebView.loadDataWithBaseUrl()
. Вот так:
webView.loadDataWithBaseURL("http://some_url/", "some_data", "text/html", "utf-8", null);
Затем "some_data" будет загружен как HTML-страница, как показано в предыдущем SO-ответе. Когда он пытается загрузить ресурс JavaScript, например /scripts/lib.js
, он будет разрешен http://some_url/scripts/lib.js
, и WebView попытается загрузить этот ресурс. Конечно, это невозможно, поэтому вам (в Java) необходимо расширить класс WebViewClient
и предоставить реализацию для метода shouldInterceptRequest(WebView wv, String url)
.
Когда какой-либо ресурс пытается получить на веб-странице, будет вызываться'houldInterceptRequest ', а его возвращаемое значение будет использоваться как ресурс.