1+ package com.flyjingfish.modulecommunication
2+
3+ import android.content.Intent
4+ import android.os.Bundle
5+ import android.webkit.WebChromeClient
6+ import android.webkit.WebSettings
7+ import android.webkit.WebView
8+ import android.webkit.WebViewClient
9+ import androidx.activity.ComponentActivity
10+ import com.flyjingfish.modulecommunication.databinding.ActivityWebBinding
11+
12+ class WebActivity : ComponentActivity () {
13+ private lateinit var binding : ActivityWebBinding
14+ override fun onCreate (savedInstanceState : Bundle ? ) {
15+ super .onCreate(savedInstanceState)
16+ binding = ActivityWebBinding .inflate(layoutInflater)
17+ setContentView(binding.root)
18+ initView()
19+ }
20+
21+ override fun onDestroy () {
22+ super .onDestroy()
23+ binding.web.destroy()
24+ }
25+
26+ override fun onResume () {
27+ super .onResume()
28+ binding.web.onResume()
29+ }
30+
31+ override fun onPause () {
32+ super .onPause()
33+ binding.web.onPause()
34+ }
35+
36+ fun initView () {
37+ setWebHtmlView()
38+ binding.web.webViewClient = CharmWebViewClient ()
39+ binding.web.webChromeClient = CharmWebChromeClient ()
40+ // binding.mlStatus.showLoading();
41+ binding.web.loadUrl(" https://flyjingfish.github.io/demoweb/indexUri.html" )
42+ }
43+ private fun setWebHtmlView () {
44+ val s: WebSettings = binding.web.settings
45+ s.allowFileAccess = false
46+ s.allowFileAccessFromFileURLs = false
47+ s.saveFormData = false
48+ s.savePassword = false
49+ s.layoutAlgorithm = WebSettings .LayoutAlgorithm .SINGLE_COLUMN
50+ s.javaScriptEnabled = true
51+ s.cacheMode = WebSettings .LOAD_DEFAULT
52+ s.domStorageEnabled = true
53+ s.javaScriptCanOpenWindowsAutomatically = true
54+ s.setSupportZoom(false )
55+ s.builtInZoomControls = false
56+ s.displayZoomControls = false
57+ s.useWideViewPort = true
58+ s.loadWithOverviewMode = true
59+ // binding.web.addJavascriptInterface(this, "nativeApi")
60+ s.mixedContentMode = WebSettings .MIXED_CONTENT_ALWAYS_ALLOW
61+ }
62+
63+ private inner class CharmWebViewClient : WebViewClient () {
64+ override fun shouldOverrideUrlLoading (view : WebView , url : String ): Boolean {
65+ return if (url.startsWith(" http" ) || url.startsWith(" https" )) {
66+ view.loadUrl(url)
67+ true
68+ } else {
69+ try {
70+ startActivity(Intent .parseUri(url, 0 ))
71+ true
72+ } catch (e: Exception ) {
73+ true
74+ }
75+ }
76+ }
77+ }
78+
79+ private inner class CharmWebChromeClient : WebChromeClient () {
80+ override fun onReceivedTitle (view : WebView , title : String ) {
81+ super .onReceivedTitle(view, title)
82+ }
83+ }
84+ }
0 commit comments