Подтвердить что ты не робот

Android WebView JavaScript из активов

Как я могу заставить JavaScript и изображения на моей удаленной HTML-странице загружаться из папки с ресурсами (или только с любым локальным ресурсом)?

4b9b3361

Ответ 1

Ответ:
1. Вы ДОЛЖНЫ загружать HTML в строку:

private String readHtml(String remoteUrl) {
    String out = "";
    BufferedReader in = null;
    try {
        URL url = new URL(remoteUrl);
        in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            out += str;
        }
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return out;
}


2. Загрузите WebView с базовым URL:

String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");

В этом конкретном случае вы должны иметь все файлы .js, которые вы хотите использовать на странице, где-то в папке "активы" проекта. Например:

/MyProject/assets/jquery.min.js


3. На вашей удаленной странице html вам нужно загрузить файлы .js и .css, которые находятся в вашем приложении, например:

<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>

то же самое относится ко всем другим локальным ресурсам, таким как изображения и т.д. их путь должен начинаться с

file:///android_asset/

WebView сначала загрузит необработанный HTML-код, который вы предоставили в виде строки, затем выберите .js,.css и другие локальные ресурсы, а затем загрузит удаленный контент.

Ответ 2

Если вы динамически создаете свой HTML, а затем используете loadDataWithBaseURL, убедитесь, что любые локальные ресурсы, например. javascript в вашей папке с ресурсами упоминается в HTML как файл:///(Я потратил часы на это)