Come è possibile caricare JavaScript e immagini sulla mia pagina HTML remota dalla cartella delle risorse (o semplicemente da una risorsa locale)?WebView Android JavaScript dalle risorse
risposta
Risposta:
1. è necessario caricare il codice HTML in stringa:
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. Carico WebView con URL di base:
String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");
In questo caso particolare si dovrebbe avere tutti i file .js che si desidera utilizzare nella pagina per risiedere da qualche parte nella cartella "assets" del progetto. Per esempio:
/MyProject/assets/jquery.min.js
3. Nella tua pagina html a distanza è necessario caricare js e file css che risiedono nella vostra applicazione, come:
<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>
lo stesso vale per tutti gli altri locali risorse come immagini, ecc loro percorso deve iniziare con
file:///android_asset/
Un WebView avrebbe prima caricare il codice HTML grezzo che ci avete fornito come stringa, poi scegliere .js, css e altre risorse locali e quindi caricare i contenuti remoti.
Perché dovresti fornire il percorso assoluto se imposti il percorso di base con 'loadDataWithBaseURL'? Inoltre, sembra che questo si rompa in 4.1+. :( – Maarten
Questo sembra funzionare in 4.1+ per me, ed è finora l'unico modo in cui sono stato in grado di caricare HTML con javascript che non è codificato nella cartella delle risorse. – Chris
Se l'html è già remoto senza possibilità per modificare il programma è necessario identificare questi file e sostituire la stringa dal * String html * – htafoya
Se si crea dinamicamente il codice HTML e quindi si utilizza loadDataWithBaseURL, assicurarsi che tutte le risorse locali, ad es. javascript nella cartella delle risorse sono indicati nell'HTML come file: /// (I ore trascorse a risolverlo)
puoi dirmi in dettaglio come aggiungere dinamicamente (file: //) percorso a .js dopo aver ottenuto html come stringa. – Adi
È necessario inserire la risposta in una risposta in modo da poter contrassegnare questo chiuso. –