Webview не загружает JS / CSS и не обнаруживает нажатия на кнопку - PullRequest
0 голосов
/ 27 августа 2018

У меня проблема при попытке отобразить HTML-страницу, полученную от API, в моем WebView. Похоже, что нет загруженного JavaScript и CSS.

Кроме того, когда я нажимаю определенные кнопки, я могу перейти на другую страницу, но если я нажимаю на другие кнопки, ничего не происходит.

Я уже пытался включить Javascript в WebView.

Переменная webPage содержит код HTML.

Вот мой код:

    @SuppressLint("SetJavaScriptEnabled")
private fun showGarminDiag(webPage : String)
{
    val dialogView = View.inflate(context, R.layout.dialog_garmin_connect, null)

    val dialog = Dialog(context, R.style.MyAlertDialogStyle)
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
    dialog.setContentView(dialogView)

    val mWebView = dialogView.findViewById<WebView?>(R.id.garmin_connect_webview)
    //val mWebView = dialogView.findViewById<AdvancedWebView?>(R.id.garmin_connect_webview)

    val back = dialogView.findViewById<Button?>(R.id.webview_back)
    val forward = dialogView.findViewById<Button?>(R.id.webview_forward)

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mWebView?.settings?.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE
        //mWebView?.settings?.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
    }
    mWebView?.settings?.javaScriptEnabled = true
    mWebView?.settings?.javaScriptCanOpenWindowsAutomatically = true
    mWebView?.loadData(webPage, "text/html", "UTF-8")

    back?.setOnClickListener({
        if (mWebView != null && mWebView.canGoBack())
            mWebView.goBack()
    })

    forward?.setOnClickListener({
        if (mWebView != null && mWebView.canGoForward())
            mWebView.goForward()
    })

    mWebView?.webViewClient = object : WebViewClient() {
        override fun onPageFinished(view: WebView?, url: String?) {
            super.onPageFinished(view, url)
            val test = url
            Toast.makeText(context, url, Toast.LENGTH_LONG).show()
            if (url == "success")
            {
                getProfile()
            }
            val t = 0
        }

        override fun onFormResubmission(view: WebView?, dontResend: Message?, resend: Message?) {
            super.onFormResubmission(view, dontResend, resend)

            val test = dontResend

            val test1 = resend

            val t = 0
        }
    }

    dialog.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

    dialog.show()

}

А вот мой XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/garmin_connect_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="5dp">

    <Button
        android:id="@+id/webview_back"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:text="Retour"
        android:background="@drawable/blue_all_rounded_shape"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <Button
        android:id="@+id/webview_forward"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:text="Avancer"
        android:background="@drawable/blue_all_rounded_shape"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

<WebView

    android:id="@+id/garmin_connect_webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!--
    <im.delight.android.webview.AdvancedWebView
    android:id="@+id/garmin_connect_webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
-->
</LinearLayout>

Вот ссылка, чтобы увидеть пример того, что содержит переменная webPage: https://codeshare.io/5e4ZyJ

...