仅在模拟器中使用WebView.loadData()的"网页不可用"

use*_*395 13 android emulation webview android-emulator

我正在调用loadData我的WebView并以字符串的形式传递一些HTML,如下所示:

webView.loadData( htmlString, "text/html", "utf-8" );
Run Code Online (Sandbox Code Playgroud)

它在我的Galaxy Tab 10.1上工作正常,但WebView显示:

Webpage not available

在模拟器上运行时,所有设置都与我的Galaxy Tab匹配.android.permission.INTERNET清单中的设置没有任何效果,但我不需要该权限,因为我正在渲染内存中的HTML,而不是通过数据连接访问任何内容.

这是怎么回事?

Vir*_*raj 34

尝试使用此代码

webView.loadData( URLEncoder.encode(htmlString).replaceAll("\\+"," "), "text/html", "utf-8" );
Run Code Online (Sandbox Code Playgroud)

绝对的

webView.loadData( htmlString, "text/html", "utf-8" );
Run Code Online (Sandbox Code Playgroud)

它应该工作,因为有时像'%','\','#'这样的字符如果没有正确编码就会产生问题


far*_*jad 27

2.x平台上loadData()失败在某些情况下(它需要进行转义的HTML),使用loadDataWithBaseURL()替代,并通过nullbaseUrlhistoryUrl:

webView.loadDataWithBaseURL(null, htmlString, "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)