Метод Webview shouldInterceptRequest всегда возвращает ноль - PullRequest
0 голосов
/ 19 октября 2018

Метод Webview shouldInterceptRequest всегда возвращает значение null. Я перестал использовать метод для блокировки рекламы. Я перепробовал множество методов adblock, но всегда нужен этот метод shouldInterceptRequest, но он возвращает значение null.

Мой код веб-просмотра

webView.webViewClient = object : WebViewClient() {

        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {




            view!!.loadUrl(request!!.url.toString())
            return true


        }

        override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse {
            return if (

                    AdBlocker.isAd(request!!.url.toString()))
                AdBlocker.createEmptyResource()
            else
                super.shouldInterceptRequest(view, request)
        }



        override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
            eTadres.setText(url)


            suankiurl= url!!
            super.onPageStarted(view, url, favicon)
        }



        override fun onLoadResource(view: WebView?, url: String?) {
            if (webView.visibility==View.GONE){webView.visibility=View.VISIBLE}
            super.onLoadResource(view, url)
        }


    }

Журнал ошибок

W/System.err: java.lang.IllegalStateException: super.shouldInterceptRequest(view, request) must not be null
10-19 17:46:53.185 306-349/com.bulamac.tarayicibulamac W/System.err:     at com.bulamac.tarayicibulamac.WebviewFragment$onCreateView$5.shouldInterceptRequest(WebviewFragment.kt:182)
10-19 17:46:53.185 306-349/com.bulamac.tarayicibulamac W/System.err:     at com.android.webview.chromium.WebViewContentsClientAdapter.shouldInterceptRequest(WebViewContentsClientAdapter.java:52)
10-19 17:46:53.185 306-349/com.bulamac.tarayicibulamac W/System.err:     at org.chromium.android_webview.AwContents$BackgroundThreadClientImpl.shouldInterceptRequest(AwContents.java:9)
10-19 17:46:53.185 306-349/com.bulamac.tarayicibulamac W/System.err:     at org.chromium.android_webview.AwContentsBackgroundThreadClient.shouldInterceptRequestFromNative(AwContentsBackgroundThreadClient.java:11)
10-19 17:46:53.186 306-349/com.bulamac.tarayicibulamac A/chromium: [FATAL:jni_android.cc(243)] Please include Java exception stack in crash report

1 Ответ

0 голосов
/ 22 января 2019

super.shouldInterceptRequest(view, request) всегда будет возвращать ноль (смотрите реализацию этого кода).Если вы хотите предотвратить сбой приложения, вы должны использовать приведенный ниже пример

Изменить на «WebResourceResponse?»(было добавлено '?')

override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
            return super.shouldInterceptRequest(view, request)
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...