WebView显示空白

时间:2018-04-21 18:00:09

标签: android webview android-8.1-oreo

我在Oreo下的WebView中显示本地生成的HTML内容时遇到问题。有问题的代码在Oreo之前完成了所有工作,但在奥利奥上我只得到一个空的白色窗口。

我的布局非常简单:

<?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字符串 - 我不是想通过互联网访问任何内容。

我尝试过的事情没有取得任何成功:

添加:

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>";

在所有情况下,我只是得到一个白色的屏幕。

正如我所说的那样,这项工作一直很好,包括Nougat,但现在在Oreo上失败了。

建议?

0 个答案:

没有答案