2015-03-31 13 views

Antwort

7

Laden von HTML In einem WebView Mit einer Basis-URL

Wenn die HTML Sie direkt in die WebView in Ihrem Android-Web-App mit relativem URLs enthält Links laden, dann können diese Verbindungen nicht korrekt funktionieren. Wenn Sie HTML direkt in die WebView laden, hat der HTML-Code keine Basis-URL, von der aus die relativen URLs interpretiert werden können. Die Android WebView-Komponente hat dafür eine Lösung.

Sie können HTML direkt in das WebView mit einer Basis-URL laden. Die Basis-URL wird dann verwendet, um alle relativen URLs im HTML aufzulösen. Um HTML mit einer Basis-URL zu laden, müssen Sie die Methode loadDataWithBaseURL() verwenden. Hier ist ein WebView loadDataWithBaseURL() Beispiel:

String baseUrl = "http://tutorials.jenkov.com"; 
String data  = "Relative Link"; 
String mimeType = "text/html"; 
String encoding = "UTF-8"; 
String historyUrl = "http://tutorials.jenkov.com/jquery/index.html"; 
webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); 

Die loadDataWithBaseURL() Methode dauert 5 Parametern. Der Datenparameter ist der HTML-Code, der in das WebView geladen werden soll. Der MimeType ist der Mime-Typ der in das WebView geladenen Daten (in diesem Beispiel text/html). Die Kodierung ist die binäre Kodierung der Daten (in diesem Beispiel UTF-8). Hinweis: Ich habe versucht, UTF-16 als Kodierung zu verwenden, aber der im WebView angezeigte Inhalt sah ziemlich seltsam aus (wie asiatische Zeichen).

Der Parameter baseUrl ist die Basis-URL, von der alle relativen URLs im geladenen HTML interpretiert werden.

Der Parameter historyUrl ist die URL, die in den internen Navigationsverlauf des WebView für den in das WebView geladenen HTML geschrieben wird. Wenn der Benutzer von dem geladenen HTML zu einer anderen Seite navigiert und dann auf die Schaltfläche "Zurück" klickt, ist es diese URL, zu der das WebView zurück navigieren wird. Möglicherweise müssen Sie das Laden dieser URL abfangen, da das Navigieren durch den WebView-Verlauf nicht zum geladenen HTML führt, sondern zu dem im Parameter historyUrl angegebenen URL (oder ungefähr: leer, wenn historyUrl auf null gesetzt ist).

Für weitere Informationen gehen Sie durch diese tutorial und diese stackoverflow answer.

+0

Danke. Es ist sehr klar – dondonhk

0

Welche Android-Dokument sagt:

die angegebenen Daten in dieser WebView Lasten für den Inhalt baseUrl als Basis-URL verwenden.