210 lines
7.9 KiB
Java
210 lines
7.9 KiB
Java
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<WebViewDialogBinding> {
|
||
|
||
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();
|
||
}
|
||
}
|
||
|
||
}
|