Android webview的loadData和loadDataWithBaseURL之间有什么区别

时间:2012-09-14 08:55:27

标签: android methods webview load

Android webview有两种加载数据的方法

public void loadData (String data, String mimeType, String encoding)
  

请注意,JavaScript的相同源策略意味着运行的脚本   使用此方法加载的页面将无法访问内容   使用“数据”以外的任何方案加载,包括“http(s)”。至   避免这种限制,使用loadDataWithBaseURL()与适当的   基本网址。

public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
  

请注意,以这种方式指定的内容可以访问本地设备文件   (仅通过'文件'方案URL)仅当baseUrl指定除以外的方案时   'http','https','ftp','ftps','about'或'javascript'。

我不知道这两句话意味着什么以及何时在两者之间进行选择?

提前致谢

3 个答案:

答案 0 :(得分:10)

public void loadData (String data, String mimeType, String encoding)

在此我们传递HTML,mimeType和编码

中的其他地方
public void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)

其中baseUrl可以是基本网址,例如资产文件夹的路径,SDCard或任何其他路径,您的图片或其他媒体与您的html相关,我不太了解historyUrl

符合[loadData][1]

的文档
  

请注意,JavaScript的相同原始策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“数据”以外的任何方案加载的内容,包括“http(s)”。要避免此限制,请使用loadDataWithBaseURL()和相应的基本URL。

表示loaddata仅包含第一个参数中的部分。

  

请注意,只有当baseUrl指定“http”,“https”,“ftp”,“ftps”,“about”以外的方案时,以这种方式指定的内容才能访问本地设备文件(通过“文件”方案网址)或'javascript'。

上面的简单含义是你可以通过传递baseUrl

来访问http和...的其他数据

例如我写的HTML需要来自我的ftp或其他地方的大量图像我要做的是在baseURl参数中传递我的ftp的url并且我可以访问我的图像

答案 1 :(得分:3)

当你在本地加载HTML时,第二个就派上用场,它引用了像图像和放大器这样的资源。 css也是本地打包的

答案 2 :(得分:1)

loadDataWithBaseURL()还附带Unicode支持。当您尝试使用英语以外的内容加载网页时,它可能会有所帮助。