package com.ckkj.water.mine; import android.net.http.SslError; import android.os.Build; import android.os.Bundle; import android.view.View; import android.webkit.JavascriptInterface; import android.webkit.SslErrorHandler; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.gyf.immersionbar.ImmersionBar; import com.ckkj.water.AppConfig; import com.ckkj.water.R; import com.ckkj.water.base.BaseActivityNoP; import com.ckkj.water.databinding.ActivitySerivceWebLayoutBinding; import com.ckkj.water.network.BaseBean; /** * @author fengxiaoyang * @date 2025/5/13 * @description TODO: 描述该类的作用 */ public class WebviewUserAgreement extends BaseActivityNoP { public static final int AGREEMENT_CODE = 10001; public static final int PRIVACY_CODE = 10002; private int mFromRequest = -1; @Override public int getLayoutResId(Bundle savedInstanceState) { return 0; } @Override public void initData(Bundle savedInstanceState) { super.initData(savedInstanceState); ImmersionBar.with(this) .statusBarColor(R.color.white) // 设置状态栏颜色 .statusBarDarkFont(true) // 设置状态栏字体为黑色 .titleBar(viewBinding.rlTitle) .init(); Bundle bundle = getIntent().getExtras(); mFromRequest = bundle.getInt("from_requse_code"); viewBinding.mWvJieyou.setVisibility(View.VISIBLE); String fileUrl = ""; //登录状态下,拼接token/userid/头像等参数进入聊天 if(mFromRequest == AGREEMENT_CODE){ viewBinding.includeTitle.tvTitle.setText("用户协议"); fileUrl = AppConfig.USER_AGREEMENT; }else if(mFromRequest == PRIVACY_CODE){ viewBinding.includeTitle.tvTitle.setText("隐私政策"); fileUrl = AppConfig.USER_PRIVACY; } viewBinding.mWvJieyou.addJavascriptInterface(new JsInterface(), "Android"); viewBinding.mWvJieyou.getSettings().setJavaScriptEnabled(true); viewBinding.mWvJieyou.getSettings().setUseWideViewPort(true); viewBinding.mWvJieyou.getSettings().setLoadWithOverviewMode(true); viewBinding.mWvJieyou.setHapticFeedbackEnabled(false); viewBinding.mWvJieyou.getSettings().setSupportZoom(true); viewBinding.mWvJieyou.getSettings().setAllowUniversalAccessFromFileURLs(true); viewBinding.mWvJieyou.getSettings().setDomStorageEnabled(true); viewBinding.mWvJieyou.setLayerType(View.LAYER_TYPE_HARDWARE, null); // 设置允许JS弹窗 viewBinding.mWvJieyou.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); showLoadingDialog(); viewBinding.mWvJieyou.setWebViewClient(new AppWebViewClients()); // viewBinding.mWvJieyou.setWebChromeClient(new MyWebChromeClient()); viewBinding.mWvJieyou.loadUrl(fileUrl);//确保跳转到另一个网页时仍然在当前WebView显示 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { viewBinding.mWvJieyou.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } viewBinding.mWvJieyou.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); viewBinding.includeTitle.imgBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //调用H5中的closeWs函数,结束当前会话 } }); viewBinding.includeTitle.imgBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } public class JsInterface { /** * 关闭页面 */ @JavascriptInterface public void finishActivity() { finish(); } /** * 关闭页面 */ @JavascriptInterface public void send(String msg) { } } public class AppWebViewClients extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // // html加载完成之后,隐藏进度条 hideDialogLoading(); super.onPageFinished(view, url); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } } @Override public void showError(String message) { } @Override public void logOut(BaseBean bean) { } }