在Android WebView的loadDataWithBaseURL方法中,有"baseUrl"和"historyUrl"两个参数。
它们用于什么?
我已经阅读了Android文档,但还是不清楚它们是用来干什么的。
使用基础URL将HTML加载到WebView中
如果您直接将包含相对URL链接的HTML加载到Android Web应用程序中的WebView中,则这些链接可能无法正常工作。当您将HTML直接加载到WebView中时,该HTML没有基础URL来解释相对URL。 Android WebView组件有一个解决方案。
您可以使用基础URL直接将HTML加载到WebView中。然后使用基础URL解析HTML中的所有相对URL。要使用基础URL加载HTML,您必须使用loadDataWithBaseURL()方法。以下是WebView loadDataWithBaseURL()示例:
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);
loadDataWithBaseURL() 方法需要5个参数。 data 参数是要加载到 WebView 中的 HTML。 mimeType 是加载到 WebView 中的数据的 MIME 类型(在此示例中为 text/html)。 encoding 是数据的二进制编码(在此示例中为 UTF-8)。注意:我尝试使用 UTF-16 作为编码,但在 WebView 中显示的内容看起来很奇怪(像亚洲字符)。
baseUrl 参数是解释加载的 HTML 中所有相对 URL 的基本 URL。
historyUrl 参数是要写入 WebView 内部导航历史记录的 URL,用于加载到 WebView 中的 HTML。如果用户从加载的 HTML 导航到另一页,然后单击“返回”按钮,则 WebView 将导航回该 URL。您可能需要拦截此 URL 的加载,因为导航回 WebView 的历史记录将不会带您回到已加载的 HTML,而是会返回到 historyUrl 参数中指定的 URL(如果 historyUrl 设置为 null,则返回 about:blank)。
有关更多信息,请参阅此教程 和此stackoverflow 答案。
Android文档中的描述:
使用baseUrl作为内容的基本URL,将给定数据加载到此WebView中。