Kotlin-无法在android pie设备中加载android Web视图的URL

Kotlin-无法在android pie设备中加载android Web视图的URL,android,kotlin,android-webview,Android,Kotlin,Android Webview,因此,我需要将URL加载到android Web视图中。但不幸的是,android 9(Pie)设备没有加载该页面,而android 5.1.1(棒棒糖)设备却完美地加载了该页面。在android pie设备上加载URL时出现“android webkit resource”错误 IntakeReadingsFragment.kt override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActi

因此,我需要将URL加载到android Web视图中。但不幸的是,android 9(Pie)设备没有加载该页面,而android 5.1.1(棒棒糖)设备却完美地加载了该页面。在android pie设备上加载URL时出现“android webkit resource”错误

IntakeReadingsFragment.kt

 override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        binding.setLifecycleOwner(this)
        myWebSettings = binding.webView.getSettings()
        databasePath = activity!!.getDir("database", Context.MODE_PRIVATE).getPath()

        myWebSettings!!.setJavaScriptEnabled(true)
        myWebSettings!!.setDatabaseEnabled(true)
        myWebSettings!!.setDatabasePath(databasePath)
        myWebSettings!!.setLoadWithOverviewMode(true)
        myWebSettings!!.setUseWideViewPort(true)
        myWebSettings!!.setAppCacheEnabled(true)
        myWebSettings!!.setCacheMode(WebSettings.LOAD_NO_CACHE)
        myWebSettings!!.setDatabaseEnabled(true)
        myWebSettings!!.setDomStorageEnabled(true)
        myWebSettings!!.setGeolocationEnabled(false)
        myWebSettings!!.setSaveFormData(false)
        myWebSettings!!.setJavaScriptCanOpenWindowsAutomatically(true)

        binding.webView.setWebChromeClient(object : WebChromeClient() {
            private val TAG = "WebView"

            override fun onConsoleMessage(cm: ConsoleMessage): Boolean {
                Log.d(TAG, cm.sourceId() + ": Line " + cm.lineNumber() + " : " + cm.message())
                return true
            }

        })

        binding.completeButton.singleClick {
                showCompleteCOnfirmationDialog()
        }

        binding.cancelButton.singleClick {
            val cancelDialogFragment = CancelDialogFragment()
            cancelDialogFragment.arguments = bundleOf("participant" to participant)
            cancelDialogFragment.show(fragmentManager!!)
        }
        val intakeRequest = IntakeRequest("")

        intakeRequest.meta = participant!!.meta
        viewModel.setParticipant(intakeRequest, participant?.screeningId)

        binding.webView.addJavascriptInterface(JavascriptInterface(activity, viewModel, jobManager), "Android")

        viewModel.intakePostComplete?.observe(this, Observer { assertsResource ->
            if (assertsResource?.status == Status.SUCCESS) {
                println(assertsResource.data?.data)
                if (assertsResource.data != null) {

                    val intakeData = assertsResource.data.data
                    binding.webView.loadUrl(intakeData?.intake_url)
                    webUrl = intakeData!!.intake_url

                    Log.d("INTAKE_FRAGMENT", "URL: " + webUrl)

                }
            }
        })

        binding.webView.setWebViewClient(object : WebViewClient() {

            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                if(url != null) {
                    //binding.webView.loadUrl(webUrl)
                }

            }

            override fun onReceivedHttpError(view: WebView?, request: WebResourceRequest?, errorResponse: WebResourceResponse?
            ) {
                super.onReceivedHttpError(view, request, errorResponse)
                Log.d("INTAKE_READING","HTTP_ERROR_REQUEST: " + request.toString() + " AND HTTP_ERROR_RESPONSE " + errorResponse.toString())
            }

            override fun onReceivedHttpAuthRequest(
                view: WebView?,
                handler: HttpAuthHandler?,
                host: String?,
                realm: String?
            ) {
                super.onReceivedHttpAuthRequest(view, handler, host, realm)
                Log.d("INTAKE_READING" , "HTTP_AUTH_REQUEST_ERROR: " + realm + ", " + host)
            }
        })

        viewModel.intakeUpdateComplete?.observe(this, Observer { assertsResource ->
            if (assertsResource?.status == Status.SUCCESS) {
                println(assertsResource.data?.data)
                if (assertsResource.data != null) {
                    val completedDialogFragment = CompletedDialogFragment()
                    completedDialogFragment.arguments = bundleOf("is_cancel" to false)
                    completedDialogFragment.show(fragmentManager!!)

                } else {
                    binding.completeButton.visibility = View.VISIBLE
                    toast(assertsResource.message.toString())
                    Crashlytics.logException(Exception("IntakeComplete " + assertsResource.message.toString()))
                    binding.executePendingBindings()
                }
            }
        })
}   


class JavascriptInterface(
        val mContext: FragmentActivity?,
        val viewModel: IntakeReadingsViewModel,
        val jobManager: JobManager
    ) {
        fun finish() {

        }

        fun showAndroidToast() {
            Toast.makeText(mContext, "ss", Toast.LENGTH_LONG).show();
        }

        @android.webkit.JavascriptInterface
        fun showToast(json: String) {

        }

        private fun isNetworkAvailable(): Boolean {
            val connectivityManager = mContext?.getSystemService(Context.CONNECTIVITY_SERVICE)
            return if (connectivityManager is ConnectivityManager) {
                val networkInfo: NetworkInfo? = connectivityManager.activeNetworkInfo
                networkInfo?.isConnected ?: false
            } else false
        }

    }

尝试此代码将帮助您在应用程序中打开网页

try {
        val builder = CustomTabsIntent.Builder()
        val customTabsIntent = builder.build()
        this.let {
            customTabsIntent.launchUrl(
                this,
                Uri.parse("https://www.google.com/")
            )
        }

    } catch (ex: Exception) {
        Log.e("exBrowser","ex ${ex}")
    }

也要共享完整的错误消息。@Rajendra dabiandroid.webkit。WebResourceResponse@587a727响应来自override fun onReceivedHttPeror(视图:WebView?,请求:WebResourceRequest?,错误响应:WebResourceResponse?{super.onReceivedHttPeror(视图,请求,错误响应)Log.d(“接收读取”、“HTTP错误请求:“+REQUEST.toString()+”和HTTP错误响应“+errorResponse.toString())}Ek@e9c65e6在binding.webView.setWebViewClient(对象:WebViewClient(){}添加浏览器SDKuser“https://“我正在更新URL,然后尝试运行againNope,在添加浏览器SDK后无法运行,另一方面,google chrome也会在android 28 API选项卡中打开此URL。