|
@@ -12,6 +12,7 @@ import androidx.annotation.RequiresApi
|
|
|
import com.enation.javashop.net.engine.model.NetState
|
|
|
import com.enation.javashop.utils.base.widget.LoadingDialog
|
|
|
import com.wdkl.app.ncs.callingbed.R
|
|
|
+import com.wdkl.app.ncs.callingbed.activity.SignActivity
|
|
|
import com.wdkl.app.ncs.callingbed.databinding.SignFragmentLayBinding
|
|
|
import com.wdkl.app.ncs.callingbed.helper.CommonDialogHelper
|
|
|
import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
|
|
@@ -28,48 +29,57 @@ import kotlinx.android.synthetic.main.sign_fragment_lay.*
|
|
|
class SignMainFragment : BaseFragment<BedSignFragmentPresenter, SignFragmentLayBinding>(), BedSignFragmentContract.View {
|
|
|
|
|
|
private lateinit var loadingDialog:LoadingDialog
|
|
|
+ private lateinit var webView: WebView
|
|
|
+
|
|
|
+ fun signLoadUrl(memberId: Int, gateWay: String) {
|
|
|
+ webView.loadUrl("file:///android_asset/web/vital_sign_log.html?id=" + memberId + "&gw=" + gateWay)
|
|
|
+ }
|
|
|
+
|
|
|
@SuppressLint("JavascriptInterface")
|
|
|
- companion object {
|
|
|
- var webView: WebView = WebView(BaseApplication.appContext)
|
|
|
- fun signLoadUrl(memberId:Int, gateWay:String){
|
|
|
- webView.loadUrl("file:///android_asset/web/vital_sign_log.html?id=" + memberId + "&gw=" + gateWay)
|
|
|
+ fun initWebViewSettings() {
|
|
|
+ // 解决共用system uid时报
|
|
|
+ // Caused by: java.lang.UnsupportedOperationException: For security reasons, WebView is not allowed in privileged processes 错误
|
|
|
+ val uid = android.os.Process.myUid()
|
|
|
+ if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID) {
|
|
|
+ (activity as SignActivity).hookWebView()
|
|
|
}
|
|
|
- init {
|
|
|
- webView.addJavascriptInterface(BaseApplication.appContext,"webview")
|
|
|
- var webSettings = webView.settings
|
|
|
- webSettings.javaScriptEnabled = true // 开启 JavaScript 交互
|
|
|
-
|
|
|
- webSettings.allowUniversalAccessFromFileURLs = true //跨域
|
|
|
- webSettings.setAppCacheEnabled(true) // 启用或禁用缓存
|
|
|
- webSettings.cacheMode = WebSettings.LOAD_DEFAULT // 只要缓存可用就加载缓存, 哪怕已经过期失效 如果缓存不可用就从网络上加载数据
|
|
|
+
|
|
|
+ webView = WebView(BaseApplication.appContext)
|
|
|
+ webView.addJavascriptInterface(BaseApplication.appContext, "webview")
|
|
|
+ var webSettings = webView.settings
|
|
|
+ webSettings.javaScriptEnabled = true // 开启 JavaScript 交互
|
|
|
+
|
|
|
+ webSettings.allowUniversalAccessFromFileURLs = true //跨域
|
|
|
+ webSettings.setAppCacheEnabled(true) // 启用或禁用缓存
|
|
|
+ webSettings.cacheMode = WebSettings.LOAD_DEFAULT // 只要缓存可用就加载缓存, 哪怕已经过期失效 如果缓存不可用就从网络上加载数据
|
|
|
// webSettings.setAppCachePath(cacheDir.path) // 设置应用缓存路径
|
|
|
|
|
|
- // 缩放操作
|
|
|
- webSettings.setSupportZoom(true) // 支持缩放 默认为true 是下面那个的前提
|
|
|
- webSettings.builtInZoomControls = false // 设置内置的缩放控件 若为false 则该WebView不可缩放
|
|
|
- webSettings.displayZoomControls = false // 隐藏原生的缩放控件
|
|
|
+ // 缩放操作
|
|
|
+ webSettings.setSupportZoom(true) // 支持缩放 默认为true 是下面那个的前提
|
|
|
+ webSettings.builtInZoomControls = false // 设置内置的缩放控件 若为false 则该WebView不可缩放
|
|
|
+ webSettings.displayZoomControls = false // 隐藏原生的缩放控件
|
|
|
|
|
|
- webSettings.blockNetworkImage = false // 禁止或允许WebView从网络上加载图片
|
|
|
- webSettings.loadsImagesAutomatically = true // 支持自动加载图片
|
|
|
+ webSettings.blockNetworkImage = false // 禁止或允许WebView从网络上加载图片
|
|
|
+ webSettings.loadsImagesAutomatically = true // 支持自动加载图片
|
|
|
|
|
|
- webSettings.javaScriptCanOpenWindowsAutomatically = true // 支持通过JS打开新窗口
|
|
|
- webSettings.domStorageEnabled = true // 启用或禁用DOM缓存
|
|
|
- webSettings.setSupportMultipleWindows(false) // 设置WebView是否支持多窗口
|
|
|
+ webSettings.javaScriptCanOpenWindowsAutomatically = true // 支持通过JS打开新窗口
|
|
|
+ webSettings.domStorageEnabled = true // 启用或禁用DOM缓存
|
|
|
+ webSettings.setSupportMultipleWindows(false) // 设置WebView是否支持多窗口
|
|
|
|
|
|
- // 设置自适应屏幕, 两者合用
|
|
|
- webSettings.useWideViewPort = true // 将图片调整到适合webview的大小
|
|
|
- webSettings.loadWithOverviewMode = true // 缩放至屏幕的大小
|
|
|
- webSettings.allowFileAccess = true // 设置可以访问文件
|
|
|
+ // 设置自适应屏幕, 两者合用
|
|
|
+ webSettings.useWideViewPort = true // 将图片调整到适合webview的大小
|
|
|
+ webSettings.loadWithOverviewMode = true // 缩放至屏幕的大小
|
|
|
+ webSettings.allowFileAccess = true // 设置可以访问文件
|
|
|
|
|
|
- webSettings.setGeolocationEnabled(true) // 是否使用地理位置
|
|
|
+ webSettings.setGeolocationEnabled(true) // 是否使用地理位置
|
|
|
|
|
|
- webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
|
|
|
- webSettings.textZoom = 150
|
|
|
+ webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
|
|
|
+ webSettings.textZoom = 150
|
|
|
|
|
|
- webView.fitsSystemWindows = true
|
|
|
- }
|
|
|
+ webView.fitsSystemWindows = true
|
|
|
}
|
|
|
|
|
|
+
|
|
|
override fun getLayId(): Int {
|
|
|
return R.layout.sign_fragment_lay
|
|
|
}
|
|
@@ -78,11 +88,13 @@ class SignMainFragment : BaseFragment<BedSignFragmentPresenter, SignFragmentLayB
|
|
|
CallingbedLaunch.component.inject(this)
|
|
|
}
|
|
|
|
|
|
- @RequiresApi(Build.VERSION_CODES.O)
|
|
|
override fun init() {
|
|
|
//loadingDialog = CommonTool.createLoadingDialog(getActivity(), R.layout.data_loading, R.id.loadding_image)
|
|
|
- loadingDialog = CommonDialogHelper.createLoadingDialog(activity, R.layout.data_loading, R.id.loadding_image, false)
|
|
|
+ loadingDialog = CommonDialogHelper.createLoadingDialog(activity, R.layout.data_loading, R.id.loadding_image, true)
|
|
|
loadingDialog.show()
|
|
|
+
|
|
|
+ initWebViewSettings()
|
|
|
+
|
|
|
webView.webViewClient = object : WebViewClient() {
|
|
|
override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
|
|
|
return false
|