Android Kotlin - WebView показывает пустую страницу - PullRequest
0 голосов
/ 05 мая 2020

Я все перепробовал, но все равно не повезло. В моем веб-просмотре всегда отображается пустой экран. Мой главный мотив - загрузить файлы pdf с сервера.

activity_web_view. xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".activities.WebViewActivity">

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

WebViewActivity.kt

class WebViewActivity : AppCompatActivity() {
    private val url: String = "https://www.google.co.in/"
    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        setContentView(R.layout.activity_web_view)

        initWebView()
        setWebClient()
        loadUrl(url)

    }

    @SuppressLint("SetJavaScriptEnabled")
    private fun initWebView() {
        webView.settings.javaScriptEnabled = true
        webView.settings.loadWithOverviewMode = true
        webView.settings.useWideViewPort = true
        webView.settings.domStorageEnabled = true
        webView.webViewClient = object : WebViewClient() {
            override
            fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
                handler?.proceed()
            }
        }
    }

    private fun setWebClient() {
        webView.webChromeClient = object : WebChromeClient() {
            override fun onProgressChanged(
                view: WebView,
                newProgress: Int
            ) {
                super.onProgressChanged(view, newProgress)
            }
        }
    }

    private fun loadUrl(pageUrl: String) {
        webView.loadUrl(pageUrl)
    }
}

Вызов из основного действия

 val intent = Intent(this, WebViewActivity::class.java)
                startActivity(intent)

Я не знаю, что делаю не так. Помощь очень приветствуется.

Заранее спасибо.

1 Ответ

1 голос
/ 06 мая 2020

Используйте:

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_web_view)

        println("in webview")//--> add this to confirm this is actually called

        initWebView()
        setWebClient()
        loadUrl(url)
}

Не тот, который вы использовали. Другой предназначен для устойчивых перезагрузок и не будет вызываться при нормальных обстоятельствах, и вам нужно будет отметить действие как таковое в своем манифесте:

https://developer.android.com/reference/android/R.attr.html#persistableMode

...