Android WebView JavaScript z zasobów

Jak mogę sprawić, aby JavaScript i obrazy na mojej zdalnej stronie HTML były ładowane z folderu assets (lub dowolnego lokalnego zasobu)?

Author: ROMANIA_engineer, 2012-02-23

2 answers

Odpowiedź:
1. Musisz załadować kod HTML do ciągu znaków:

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. Wczytaj WebView z bazowym adresem URL:

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

W tym konkretnym przypadku powinieneś mieć wszystko .Pliki js, których chcesz użyć na stronie, znajdują się gdzieś w folderze "zasoby" projektu. Na przykład:

/MyProject/assets/jquery.min.js


3. W zdalnej stronie html musisz załadować.js i .pliki css, które znajdują się w Twojej aplikacji, takie jak:

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

To samo dotyczy wszystkich innych lokalnych zasobów, takich jak obrazy itp. ich ścieżka musi zaczynać się od

file:///android_asset/

WebView najpierw załaduje surowy HTML, który podałeś jako ciąg znaków, a następnie wybierze .js,css i inne lokalne zasoby, a następnie załaduje zdalną zawartość.

 43
Author: tomurka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-24 14:36:21

Jeśli dynamicznie tworzysz swój HTML, a następnie korzystasz z loadDataWithBaseURL, upewnij się, że wszelkie lokalne zasoby, np. javascript w folderze assets, są określane w HTML jako plik:/// (spędziłem wiele godzin nad tym pracując)

 2
Author: MLP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-03 18:36:07