WebView loadData()无法在Android 9.0中运行

时间:2019-04-23 10:55:15

标签: android android-webview jsoup

我正在尝试使用WebView上的loadData将API级别28上已提取的html数据加载为-

Element content = doc.select("div.story-page-content").first();
                    String base64 = null;
                    String html="<font size=4px color=#000ff>" + source + "</font> | <font size=2px color=#ff0000>" + date + "</font><br>" + content.html();
                    base64 = android.util.Base64.encodeToString(html.getBytes("UTF-8"),
                            android.util.Base64.DEFAULT);


                mContent.loadData(base64, "text/html; charset=utf-8", "base64");

应用程序什么都不显示。我什至尝试将loadDataWithBaseUrl()设置为-

mContent.loadDataWithBaseURL(null,html, "text/html", "utf-8",null);

仍然没有帮助。我要去哪里错了?

注意:-我正在使用Jsoup来获取Web内容。

编辑:感谢您的答复。顺便说一句,我通过删除包含webView的外部LinearLayout以某种方式修复了它。我不知道为什么会发生这种情况,但是在LinearLayout中使用API​​ 28 webView之后,该方法不起作用。这是我的布局文件-

<?xml version="1.0" encoding="utf-8"?>


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/webScroll"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <TextView
        android:id="@+id/titleText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:layout_gravity="center_vertical"
        android:layout_margin="@dimen/dimen_8x"
        android:fontFamily="sans-serif-condensed"
        android:includeFontPadding="false"
        android:text="Sample Title"
        android:textColor="@color/defaultContentColor"
        android:textSize="@dimen/dimen_24x"
        android:textStyle="bold" />

    <ProgressBar
        android:id="@+id/webProgress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/mainImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/titleText"
        app:srcCompat="@drawable/fastscroll__default_handle" />


        <WebView
            android:id="@+id/newsContent"
            android:layout_below="@id/mainImage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dp"
            android:layout_marginLeft="@dimen/dimen_8x"
            android:layout_marginRight="@dimen/dimen_8x"
            android:layout_marginTop="@dimen/dimen_4x"

            android:textSize="@dimen/fastscroll__bubble_corner" />




</RelativeLayout>

</ScrollView>

1 个答案:

答案 0 :(得分:0)

您似乎没有从站点获得与以前相同的响应。您现在可以使用更新的android版本将其释放给错误的用户代理字符串。尝试将其添加到您的请求中:

Connection.Response loginForm = Jsoup.connect(myUrl)
    .method(Connection.Method.GET)
    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0")
    .execute();

您可以通过运行How to know a user-agent string for specific android devices?处Tofeeq的答案中的代码来查找先前版本的用户代理字符串,并使用它代替我的代码中的字符串。