我在 Oreo 下的 WebView 中显示本地生成的 HTML 内容时遇到问题。在奥利奥之前,有问题的代码在所有东西上都运行良好,但在奥利奥上我只得到一个空的白色窗口。
我的布局很简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:minHeight="400dp"
android:minWidth="400dp"
android:orientation="vertical"
tools:ignore="UnusedAttribute">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</WebView>
</LinearLayout>
使用它的类派生自 DialogFragment。设置内容的代码如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Resources resources = getResources();
View v = inflater.inflate(R.layout.fragment_display_tablet, container, false);
webView = v.findViewById(R.id.webView);
webView.setWebViewClient(new LinkClickLauncher(getActivity(), objectFactory));
String content = "";
String title = "";
//code that assembles the content omitted.
//(I've verified the HTML is valid)
webView.loadDataWithBaseURL("file:///android_asset/leafTemplate.html",
content,
"text/html",
"utf-8",
null);
Dialog dialog = getDialog();
dialog.setTitle(title);
dialogUtils.adjustTitleColors(dialog, R.color.theme_navy, R.color.theme_navy);
return v;
}
content
我要喂的是webView.loadDataWithBaseURL
一个简单的 HTML 字符串——我不想从 Internet 上访问任何东西。
我尝试过但没有成功的事情:
添加:
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
WebSettings settings = webView.getSettings();
settings.setAllowUniversalAccessFromFileURLs(true);
}
将 loadDataWithBaseURL 的 baseUrl 参数更改为"about:blank"
和null
。
用一个简单的替换我的 HTML 生成:
content = "<html><body><p>Hello World!</p></body></html>";
在所有情况下,我都会得到一个白屏。
正如我所说,这在包括牛轧糖在内的情况下一直很好,但现在在奥利奥上失败了。
建议?