package com.xscm.moduleutil.dialog; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Color; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebViewClient; import android.widget.Toast; import androidx.annotation.NonNull; import com.alibaba.android.arouter.launcher.ARouter; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ScreenUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.base.CommonAppContext; import com.xscm.moduleutil.databinding.WebViewDialogBinding; import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.widget.dialog.BaseDialog; import com.tencent.imsdk.v2.V2TIMConversation; import com.tencent.mm.opensdk.modelbiz.WXOpenCustomerServiceChat; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; import com.tencent.qcloud.tuicore.TUIConstants; import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity; import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIGroupChatActivity; /** * @Author lxj$ * @Time 2025-8-8 09:20:18$ $ * @Description 弹窗webview$ */ public class WebViewDialog extends BaseDialog { String mUrl; int type;//10:天空之境 11:岁月之城 12:时空之巅 public WebViewDialog(@NonNull Context context, Bundle args) { super(context, R.style.BaseDialogStyleH); this.mUrl = args.getString("url"); this.type = args.getInt("type"); initData1(); } @Override public void onStart() { super.onStart(); if (getWindow() != null) { // 获取屏幕尺寸 android.util.DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); // 设置高度为屏幕高度的80% android.view.WindowManager.LayoutParams params = getWindow().getAttributes(); params.height = (int) (displayMetrics.heightPixels * 0.7); params.width = android.view.ViewGroup.LayoutParams.MATCH_PARENT; getWindow().setAttributes(params); } } @Override public int getLayoutId() { return R.layout.web_view_dialog; } @Override public void initView() { setCancelable(true); setCanceledOnTouchOutside(true); Window window = getWindow(); assert window != null; window.setGravity(Gravity.BOTTOM); window.setLayout((int) (ScreenUtils.getScreenWidth() * 320.f / 375), WindowManager.LayoutParams.MATCH_PARENT); mBinding.ivClose.setOnClickListener(v -> dismiss()); if (type==10){ mBinding.gzCl.setBackgroundResource(R.mipmap.tkzj); mBinding.imGz.setImageResource(R.mipmap.tkzj_gz); }else if (type==11){ mBinding.gzCl.setBackgroundResource(R.mipmap.syzc); mBinding.imGz.setImageResource(R.mipmap.syzc_gz); }else if (type==12){ mBinding.gzCl.setBackgroundResource(R.mipmap.skzj); mBinding.imGz.setImageResource(R.mipmap.skzj_gz); }else if (type==13){ mBinding.gzCl.setBackgroundResource(R.mipmap.xlh); mBinding.imGz.setImageResource(R.mipmap.xlh_gz); } } @Override public void initData() { } public void initData1() { WebSettings webSettings = mBinding.webView.getSettings(); webSettings.setUseWideViewPort(true); webSettings.setLoadWithOverviewMode(true); webSettings.setJavaScriptEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //关闭webview中缓存 //增加JSBridge mBinding.webView.addJavascriptInterface(new WebAppInterface(getContext()), "Android"); // mBinding.webView.addJavascriptInterface(new WebViewBridgeConfig(title), WebViewBridgeConfig.NAME); webSettings.setBuiltInZoomControls(false); webSettings.setSupportZoom(false); webSettings.setDomStorageEnabled(true); webSettings.setBlockNetworkImage(false);//解决图片不显示 webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); mBinding.webView.setHorizontalScrollBarEnabled(false);//水平不显示 mBinding.webView.setVerticalScrollBarEnabled(false); //垂直不显示 mBinding.webView.setWebViewClient(new WebViewClient()); mBinding.webView.setBackgroundColor(Color.TRANSPARENT); mBinding.webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); mBinding.webView.requestFocus(); mBinding.webView.loadUrl(mUrl); } private Resources getResources() { return getContext().getResources(); } public class WebAppInterface { Context mContext; WebAppInterface(Context c) { mContext = c; } // 被 H5 调用的方法 @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } @JavascriptInterface public void closeWeb() { LogUtils.e("value: "); dismiss(); } @JavascriptInterface public void customerService() { String appId = CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId(); // 填移动应用(App)的 AppId IWXAPI api = WXAPIFactory.createWXAPI(mContext, appId); // 判断当前版本是否支持拉起客服会话 WXOpenCustomerServiceChat.Req req = new WXOpenCustomerServiceChat.Req(); req.corpId = "ww1de4300858c0b461"; // 企业ID req.url = "https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7"; // 客服URL api.sendReq(req); } @JavascriptInterface public void jumpRoomPage(String room_id) { ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("form", "首页").withString("roomId", room_id).navigation(); } @JavascriptInterface public void jumpWebPage(String objects) { // ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).navigation(); ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).withString("userId", objects).navigation(); } @JavascriptInterface public void enterGroupChat(String group_id,String cover,String guild_name) { Intent intent = new Intent(mContext, TUIGroupChatActivity.class); intent.putExtra(TUIConstants.TUIChat.CHAT_ID, group_id); intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_GROUP); mContext.startActivity(intent); } @JavascriptInterface public void chatWithUser(String user_id,String nickname) { Intent intent = new Intent(mContext, TUIC2CChatActivity.class); intent.putExtra(TUIConstants.TUIChat.CHAT_ID, user_id); intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_C2C); mContext.startActivity(intent); } @JavascriptInterface public void exchange(){ ARouter.getInstance().build(ARouteConstants.CURRENCY).navigation(); } @JavascriptInterface public void Withdrawal() { ARouter.getInstance().build(ARouteConstants.WITHDRAWAL_ACTIVITY).navigation(); } @JavascriptInterface public void enterAuthent() {//实名认证 ARouter.getInstance().build(ARouteConstants.REAL_NAME_ACTIVITY2).navigation(); } @JavascriptInterface public void Recharge(){ ARouter.getInstance().build(ARouteConstants.RECHARGE_ACTIVITY).navigation(); } } }