AndroidAutoSize 弹窗和第三方页面适配

This commit is contained in:
huangjian
2021-04-20 17:35:42 +08:00
parent 9593e8de74
commit 2f6ad1804e
10 changed files with 262 additions and 577 deletions

View File

@@ -1,137 +1,147 @@
package com.yizhuan.erban.application;
package com.yizhuan.erban.application;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.http.HttpResponseCache;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.http.HttpResponseCache;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
import androidx.multidex.MultiDex;
import androidx.multidex.MultiDex;
import com.alibaba.security.realidentity.RPVerify;
import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
import com.idlefish.flutterboost.FlutterBoost;
import com.ishumei.smantifraud.SmAntiFraud;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
import com.mob.MobSDK;
import com.netease.mobsec.rjsb.watchman;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.NotificationFoldStyle;
import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.opensource.svgaplayer.SVGAParser;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.tencent.bugly.crashreport.CrashReport;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yizhuan.erban.BuildConfig;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.flutter.ChannelConstants;
import com.yizhuan.erban.flutter.XplanFlutterBoostCallback;
import com.yizhuan.erban.flutter.XplanFlutterBoostDelegate;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.radish.wallet.RadishWalletManager;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.Env;
import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.channel.ChannelModel;
import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel;
import com.yizhuan.xchat_android_core.family.model.FamilyModel;
import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansInfo;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor;
import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor;
import com.yizhuan.xchat_android_core.manager.IMMessageManager;
import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.public_chat_hall.model.PublicChatHallModel;
import com.yizhuan.xchat_android_core.radish.RadishModel;
import com.yizhuan.xchat_android_core.radish.signin.bean.ImNotice;
import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_library.net.ErBanAllHostnameVerifier;
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import com.yizhuan.xchat_android_library.utils.ProcessUtil;
import com.yizhuan.xchat_android_library.utils.SystemUtils;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import com.alibaba.security.biometrics.activity.ALBiometricsActivity;
import com.alibaba.security.biometrics.activity.ALBiometricsDialogActivity;
import com.alibaba.security.biometrics.activity.BaseBioNavigatorActivity;
import com.alibaba.security.realidentity.RPVerify;
import com.alibaba.security.realidentity.activity.RPTakePhotoActivity;
import com.alibaba.security.realidentity.activity.RPWebViewActivity;
import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
import com.idlefish.flutterboost.FlutterBoost;
import com.ishumei.smantifraud.SmAntiFraud;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
import com.mob.MobSDK;
import com.netease.mobsec.rjsb.watchman;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.NotificationFoldStyle;
import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.StatusBarNotificationConfig;
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
import com.netease.nimlib.sdk.mixpush.NIMPushClient;
import com.netease.nimlib.sdk.msg.MessageNotifierCustomization;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nis.quicklogin.ui.ProtocolDetailActivity;
import com.netease.nis.quicklogin.ui.YDQuickLoginActivity;
import com.opensource.svgaplayer.SVGAParser;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.soundcloud.android.crop.CropImageActivity;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.tencent.bugly.crashreport.CrashReport;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yizhuan.erban.BuildConfig;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.flutter.ChannelConstants;
import com.yizhuan.erban.flutter.XplanFlutterBoostCallback;
import com.yizhuan.erban.flutter.XplanFlutterBoostDelegate;
import com.yizhuan.erban.module_hall.HallDataManager;
import com.yizhuan.erban.radish.wallet.RadishWalletManager;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.utils.PushMessageHandler;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.Env;
import com.yizhuan.xchat_android_core.UriProvider;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.channel.ChannelModel;
import com.yizhuan.xchat_android_core.customer_server.CustomerServerModel;
import com.yizhuan.xchat_android_core.family.model.FamilyModel;
import com.yizhuan.xchat_android_core.gift.GiftModel;
import com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.OpenSignInAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansAttachment;
import com.yizhuan.xchat_android_core.im.custom.bean.RoomInviteFansInfo;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.interceptor.NoParamsInterceptor;
import com.yizhuan.xchat_android_core.interceptor.ParamsInterceptor;
import com.yizhuan.xchat_android_core.manager.IMMessageManager;
import com.yizhuan.xchat_android_core.manager.IMSystemMsgManager;
import com.yizhuan.xchat_android_core.market_verify.MarketVerifyModel;
import com.yizhuan.xchat_android_core.mentoring_relationship.model.MentoringRelationshipModel;
import com.yizhuan.xchat_android_core.pay.PayModel;
import com.yizhuan.xchat_android_core.public_chat_hall.model.PublicChatHallModel;
import com.yizhuan.xchat_android_core.radish.RadishModel;
import com.yizhuan.xchat_android_core.radish.signin.bean.ImNotice;
import com.yizhuan.xchat_android_core.room.face.DynamicFaceModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_library.net.ErBanAllHostnameVerifier;
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import com.yizhuan.xchat_android_library.utils.ProcessUtil;
import com.yizhuan.xchat_android_library.utils.SystemUtils;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import com.zhihu.matisse.ui.MatisseActivity;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Objects;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Objects;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.plugins.RxJavaPlugins;
import io.reactivex.schedulers.Schedulers;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import me.jessyan.autosize.AutoSizeConfig;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.plugins.RxJavaPlugins;
import io.reactivex.schedulers.Schedulers;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import me.jessyan.autosize.AutoSizeConfig;
import me.jessyan.autosize.external.ExternalAdaptManager;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_SECRET;
import static com.yizhuan.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.MZ_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.OPPO_SECRET;
import static com.yizhuan.xchat_android_constants.XChatConstants.VIVO_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_APP_KEY;
import static com.yizhuan.xchat_android_constants.XChatConstants.XM_CERTIFICATE_NAME;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI;
/**
* @author chenran
@@ -144,23 +154,27 @@ public class XChatApplication extends Application {
private RefWatcher mRefWatcher;
private static String oaid;
private static boolean isSupportOaid=false;
private static boolean isSupportOaid = false;
private static int errorCode;
public static String getOaid() {
return oaid;
}
// public static String getErrorCode() {
// public static String getErrorCode() {
// return String.valueOf(errorCode);
// }
public static boolean isSupportOaid() {
return isSupportOaid;
}
public static void setIsSupportOaid(boolean isSupportOaid) {
XChatApplication.isSupportOaid = isSupportOaid;
}
public static void setIsSupportOaid(boolean isSupportOaid,int ErrorCode) {
public static void setIsSupportOaid(boolean isSupportOaid, int ErrorCode) {
XChatApplication.isSupportOaid = isSupportOaid;
XChatApplication.errorCode=ErrorCode;
XChatApplication.errorCode = ErrorCode;
}
public static XChatApplication instance() {
@@ -259,12 +273,21 @@ public class XChatApplication extends Application {
FlutterBoost.instance().setup(this, new XplanFlutterBoostDelegate(), new XplanFlutterBoostCallback());
}
AutoSizeConfig.getInstance()
.setLog(BuildConfig.DEBUG);
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
.setLog(BuildConfig.DEBUG)
.getExternalAdaptManager()
.addCancelAdaptOfActivity(ProtocolDetailActivity.class)
.addCancelAdaptOfActivity(MatisseActivity.class)
.addCancelAdaptOfActivity(CropImageActivity.class)
.addCancelAdaptOfActivity(com.netease.nim.uikit.common.media.picker.activity.CropImageActivity.class)
.addCancelAdaptOfActivity(YDQuickLoginActivity.class)
.addCancelAdaptOfActivity(RPTakePhotoActivity.class)
.addCancelAdaptOfActivity(ALBiometricsActivity.class)
.addCancelAdaptOfActivity(ALBiometricsDialogActivity.class)
.addCancelAdaptOfActivity(RPWebViewActivity.class);
LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms");
}
/**
* 初始化linkedMe
*/
@@ -439,7 +462,7 @@ public class XChatApplication extends Application {
public String makeTicker(String nick, IMMessage message) {
if (message.getMsgType() == MsgTypeEnum.custom) {
CustomAttachment customAttachment = (CustomAttachment) message.getAttachment();
if (customAttachment != null){
if (customAttachment != null) {
if (customAttachment.getFirst() == CUSTOM_MSG_HEADER_TYPE_OPEN_ROOM_NOTI) {
return message.getFromNick();
} else if (customAttachment instanceof OpenSignInAttachment) {
@@ -676,7 +699,6 @@ public class XChatApplication extends Application {
}
private void init(String channel) {
initNimUIKit();
initYiDun();

View File

@@ -1,377 +0,0 @@
package com.yizhuan.erban.avroom.fragment;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.webview.JSInterface;
import com.yizhuan.erban.ui.webview.event.CloseDialogWebViewEvent;
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
import com.yizhuan.erban.utils.WebViewUtils;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class DialogWebFragment extends DialogFragment {
private WebView webView;
private ImageView ivClose;
private Context context;
private int mPosition;
private String url;
private String targetUrl;
private WebChromeClient wvcc;
private ValueCallback<Uri> mUploadMessage;
private ValueCallback<Uri[]> mUploadMessage5;
public static final int FILECHOOSER_RESULTCODE = 5173;
public static final int FILECHOOSER_RESULTCODE_FOR_ANDROID_5 = 5174;
private boolean isDestroyView = false;
public static DialogWebFragment newInstance(String url) {
Bundle args = new Bundle();
args.putString("url", url);
DialogWebFragment fragment = new DialogWebFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onStart() {
super.onStart();
try {
Window win = getDialog().getWindow();
if (win == null) {
return;
}
win.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.transparent)));
WindowManager.LayoutParams layoutParams = getDialog().getWindow().getAttributes();
DisplayMetrics dm = new DisplayMetrics();
Display d = win.getWindowManager().getDefaultDisplay();
d.getRealMetrics(dm);
if (getActivity() == null) {
return;
}
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
layoutParams.width = dm.widthPixels;
layoutParams.dimAmount = 0.0f; //背景透明
win.setAttributes(layoutParams);
} catch (Exception ex) {
ex.printStackTrace();
}
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
//禁止bottomSheetDialogFragment的拖动效果
// dialog.setOnShowListener(dialog1 -> {
// try {
// BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) dialog1;
// Field behaviorField = bottomSheetDialog.getClass().getDeclaredField("mBehavior");
// behaviorField.setAccessible(true);
// final BottomSheetBehavior behavior = (BottomSheetBehavior) behaviorField.get(bottomSheetDialog);
// behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
//
// @Override
// public void onStateChanged(@NonNull View bottomSheet, int newState) {
// if (newState == BottomSheetBehavior.STATE_DRAGGING) {
// behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
// }
// }
//
// @Override
// public void onSlide(@NonNull View bottomSheet, float slideOffset) {
// }
// });
// } catch (Exception e) {
// e.printStackTrace();
// }
// });
//不监听返回键
dialog.setOnKeyListener((dialog12, keyCode, event) -> {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0
&& event.getAction() == KeyEvent.ACTION_DOWN) {
//onBackPressed();
return true;
}
return false;
});
return dialog;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog_web, container, false);
View llContainer = view.findViewById(R.id.ll_container);
ViewGroup.LayoutParams params = llContainer.getLayoutParams();
params.height = (UIUtil.getScreenWidth(context) - UIUtil.dip2px(context, 40)) * 4 / 3;
llContainer.setLayoutParams(params);
webView = view.findViewById(R.id.webview);
ivClose = view.findViewById(R.id.iv_close);
EventBus.getDefault().register(this);
return view;
}
@Override
public void onDestroyView() {
isDestroyView = true;
EventBus.getDefault().unregister(this);
LogUtil.print("dialog-onDestroyView");
super.onDestroyView();
}
public void show(FragmentManager manager) {
show(manager, DialogWebFragment.class.getSimpleName());
}
@Override
public void show(FragmentManager manager, String tag) {
if (manager.findFragmentByTag(tag) == null) {
manager.beginTransaction()
.add(this, tag)
.commitAllowingStateLoss();
}
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView();
}
private void initView() {
if (getArguments() != null) {
url = getArguments().getString("url");
}
ivClose.setOnClickListener(v -> dismiss());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setUseWideViewPort(true);
// 设置 WebView 可以在 HTTPS 通道上加载 HTTP 资源Android 4.4 后的暗坑
// 因为 Android 4.4 后默认不允许在 HTTPS 通道上加载 HTTP 资源
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
}
webView.getSettings().setTextZoom(100);
JSInterface jsInterface = new JSInterface(webView, context);
jsInterface.setPosition(mPosition);
webView.addJavascriptInterface(jsInterface, "androidJsObj");
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Logger.e("shouldOverrideUrlLoading--------" + url);
LogUtil.e("shouldOverrideUrlLoading" + url);
targetUrl = url;
//modules/noble/paySuccess.html
//modules/noble/order.html?nobleIndex=1 // 获取上下文, H5PayDemoActivity为当前页面
// ------ 对alipays:相关的scheme处理 -------
if (url.startsWith("alipays:") || url.startsWith("alipay")) {
try {
context.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
} catch (Exception e) {
new AlertDialog.Builder(context)
.setMessage("未检测到支付宝客户端,请安装后重试。")
.setPositiveButton("立即安装", (dialog, which) -> {
Uri alipayUrl = Uri.parse("https://d.alipay.com");
context.startActivity(new Intent("android.intent.action.VIEW", alipayUrl));
}).setNegativeButton("取消", null).show();
}
return true;
}
if (url.contains("tel:")) {
//删除直接拨打电话的功能
return true;
}
// ------- 处理结束 -------
if (!(url.startsWith("http") || url.startsWith("https"))) {
return true;
}
view.loadUrl(url);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// super.onReceivedSslError(view, handler, error); //一定要去掉
// handler.cancel();// Android默认的处理方式
handler.proceed();// 接受所有网站的证书
// handleMessage(Message msg);// 进行其他处理
}
@Override
public void onPageFinished(WebView view, String url) {
Logger.e("onPageFinished--------" + url);
//界面被销毁则不需要执行view动作了
super.onPageFinished(view, url);
}
});
//获取webviewtitle作为titlebar的title
wvcc = new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
// For Android >= 4.1
public void openFileChooser(ValueCallback<Uri> uploadMsg,
String acceptType, String capture) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
startActivityForResult(Intent.createChooser(i, "File Browser"),
FILECHOOSER_RESULTCODE);
}
// For Lollipop 5.0+ Devices
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean onShowFileChooser(WebView mWebView,
ValueCallback<Uri[]> filePathCallback,
FileChooserParams fileChooserParams) {
if (mUploadMessage5 != null) {
mUploadMessage5.onReceiveValue(null);
mUploadMessage5 = null;
}
mUploadMessage5 = filePathCallback;
Intent intent = fileChooserParams.createIntent();
try {
startActivityForResult(intent,
FILECHOOSER_RESULTCODE_FOR_ANDROID_5);
} catch (ActivityNotFoundException e) {
mUploadMessage5 = null;
return false;
}
return true;
}
};
// 设置setWebChromeClient对象
webView.setWebChromeClient(wvcc);
// 设置Webview的user-agent
webView.getSettings().setUserAgentString(webView.getSettings().getUserAgentString() + " tutuAppAndroid erbanAppAndroid");
if (!TextUtils.isEmpty(url)) {
webView.loadUrl(url);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage) {
return;
}
Uri result = intent == null || resultCode != Activity.RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
} else if (requestCode == FILECHOOSER_RESULTCODE_FOR_ANDROID_5) {
if (null == mUploadMessage5) {
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mUploadMessage5.onReceiveValue(WebChromeClient.FileChooserParams
.parseResult(resultCode, intent));
}
mUploadMessage5 = null;
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onCloseDialogWebViewEvent(CloseDialogWebViewEvent event) {
dismiss();
}
public void onBackPressed() {
if (webView.canGoBack()) {
if (!TextUtils.isEmpty(targetUrl) && targetUrl.contains("modules/nobles/paySuccess.html")) {
dismiss();
} else
webView.goBack();
} else {
dismiss();
}
}
@Override
public void dismiss() {
try {
super.dismiss();
} catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
public void onDetach() {
super.onDetach();
WebViewUtils.releaseWeb(webView);
}
}

View File

@@ -32,6 +32,8 @@ import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.AlertDialog;
import com.yizhuan.erban.common.widget.dialog.BaseAlertDialogBuilder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -110,7 +112,7 @@ public class EasyPermissions {
return;
}
AlertDialog dialog = new AlertDialog.Builder(activity)
AlertDialog dialog = new BaseAlertDialogBuilder(activity)
.setMessage(rationale)
.setPositiveButton(positiveButton, new DialogInterface.OnClickListener() {
@Override
@@ -203,7 +205,7 @@ public class EasyPermissions {
return true;
}
AlertDialog dialog = new AlertDialog.Builder(activity)
AlertDialog dialog = new BaseAlertDialogBuilder(activity)
.setMessage(rationale)
.setPositiveButton(positiveButton, new DialogInterface.OnClickListener() {
@Override

View File

@@ -0,0 +1,40 @@
package com.yizhuan.erban.common.widget.dialog;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Resources;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import me.jessyan.autosize.AutoSizeCompat;
public class BaseAlertDialogBuilder extends AlertDialog.Builder {
private static final float ALERT_BASE_WIDTH = 375f;
public BaseAlertDialogBuilder(@NonNull Context context) {
super(adjustAutoSize(context));
}
public BaseAlertDialogBuilder(@NonNull Context context, int themeResId) {
super(adjustAutoSize(context), themeResId);
}
private static Context adjustAutoSize(Context context) {
return new ContextWrapper(context) {
private final Resources mResources;
{
Resources oldResources = super.getResources();
mResources = new Resources(oldResources.getAssets(), oldResources.getDisplayMetrics(), oldResources.getConfiguration());
}
@Override
public Resources getResources() {
AutoSizeCompat.autoConvertDensityBaseOnWidth(mResources, ALERT_BASE_WIDTH);
return mResources;
}
};
}
}

View File

@@ -5,11 +5,7 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.BitmapFactory;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
@@ -26,14 +22,12 @@ import android.widget.ImageView;
import android.widget.Switch;
import android.widget.TextView;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import androidx.appcompat.app.AlertDialog;
import com.makeramen.roundedimageview.RoundedImageView;
import com.netease.nim.uikit.common.util.string.StringUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.yizhuan.erban.R;
import com.yizhuan.erban.ui.login.RegisterActivity;
import com.yizhuan.erban.ui.utils.ImageLoadUtils;
import com.yizhuan.erban.ui.widget.ButtonItem;
import com.yizhuan.erban.utils.SpannableBuilder;
@@ -62,13 +56,13 @@ public class DialogManager {
public DialogManager(Context context) {
mContext = context;
mBuilder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle);
mBuilder = new BaseAlertDialogBuilder(context, R.style.MyAlertDialogStyle);
mDialog = mBuilder.create();
}
public DialogManager(Context context, boolean noCreate) {
mContext = context;
mBuilder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle);
mBuilder = new BaseAlertDialogBuilder(context, R.style.MyAlertDialogStyle);
if (!noCreate) {
mDialog = mBuilder.create();
}
@@ -76,7 +70,7 @@ public class DialogManager {
public DialogManager(Context context, boolean canceledOnClickBackKey, boolean canceledOnClickOutside) {
mContext = context;
mBuilder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle);
mBuilder = new BaseAlertDialogBuilder(context, R.style.MyAlertDialogStyle);
mDialog = mBuilder.create();
mCanceledOnClickBackKey = canceledOnClickBackKey;
mCanceledOnClickOutside = canceledOnClickOutside;
@@ -129,7 +123,7 @@ public class DialogManager {
mDialog.dismiss();
}
}
} catch (Exception e){
} catch (Exception e) {
}
}
@@ -331,8 +325,8 @@ public class DialogManager {
public abstract void onOk();
}
public void showNewbieHelloDialog(String avatar,int gender,CharSequence titleStr,CharSequence message,CharSequence okLabel, CharSequence cancelLabel,boolean cancelable, final OkCancelDialogListener l,Context context) {
showHelloDialog(avatar,gender,titleStr,message,okLabel,cancelLabel,cancelable,mCanceledOnClickOutside,true,l, null, false,context);
public void showNewbieHelloDialog(String avatar, int gender, CharSequence titleStr, CharSequence message, CharSequence okLabel, CharSequence cancelLabel, boolean cancelable, final OkCancelDialogListener l, Context context) {
showHelloDialog(avatar, gender, titleStr, message, okLabel, cancelLabel, cancelable, mCanceledOnClickOutside, true, l, null, false, context);
}
public void showOkCancelDialog(CharSequence message, boolean cancelable, final OkCancelDialogListener l) {
@@ -417,17 +411,18 @@ public class DialogManager {
/**
* 1、音游通用的dialog设置以后尽量所有的dialog都引到这个方法方便以后改版
* 2、如果UI要求弹框是完全自定义的再重新写过
* @param title 标题,空则隐藏 (ui说有些弹框带标题有些不带两种情况共存)
* @param message 内容,不能为空,配合{@link com.yizhuan.erban.utils.SpannableBuilder} 变色使用
* @param okLabel ok按钮不能隐藏默认为 text="确定"
* @param cancelLabel 取消按钮,空则隐藏,一般现在都用text="取消"
* @param l 点击监听
* @param isCanCancel 点击返回键是否可以取消,默认=falsedialog初始化的时候为false
* (ui说ture和false根据情况而定一般自己根据理解选择)
*
* @param title 标题,空则隐藏 (ui说有些弹框带标题有些不带两种情况共存)
* @param message 内容,不能为空,配合{@link com.yizhuan.erban.utils.SpannableBuilder} 变色使用
* @param okLabel ok按钮,不能隐藏,默认为 text="确定"
* @param cancelLabel 取消按钮空则隐藏一般现在都用text="取消"
* @param l 点击监听
* @param isCanCancel 点击返回键是否可以取消,默认=falsedialog初始化的时候为false
* (ui说ture和false根据情况而定一般自己根据理解选择)
* @param canceledOnTouchOutside ture的话点击背景消失
* @param isAutoHide 默认ture点击按钮的时候自动隐藏dialog(暂时用不到属性,放着先)
* @param backListener 弹窗返回键的监听
* @param dismissAfterBack 点击返回键是否自动dismiss
* @param isAutoHide 默认ture点击按钮的时候自动隐藏dialog(暂时用不到属性,放着先)
* @param backListener 弹窗返回键的监听
* @param dismissAfterBack 点击返回键是否自动dismiss
*/
public void showOkCancelDialog(CharSequence title, CharSequence message, CharSequence okLabel,
CharSequence cancelLabel, boolean isCanCancel, boolean canceledOnTouchOutside,
@@ -450,10 +445,10 @@ public class DialogManager {
}
public void showHelloDialog(String avatar,int gender,CharSequence title, CharSequence message, CharSequence okLabel,
CharSequence cancelLabel, boolean isCanCancel, boolean canceledOnTouchOutside,
final boolean isAutoHide, final OkCancelDialogListener l,final OnKeyBackListener backListener, boolean dismissAfterBack
,Context context) {
public void showHelloDialog(String avatar, int gender, CharSequence title, CharSequence message, CharSequence okLabel,
CharSequence cancelLabel, boolean isCanCancel, boolean canceledOnTouchOutside,
final boolean isAutoHide, final OkCancelDialogListener l, final OnKeyBackListener backListener, boolean dismissAfterBack
, Context context) {
if (!checkActivityValid()) {
MLog.info(this, "showOkCancelDialog ActivityInvalid....");
@@ -466,8 +461,8 @@ public class DialogManager {
mDialog = mBuilder.create();
mDialog.show();
setHelloDialog(mDialog,avatar, gender,title, message, okLabel, cancelLabel, isCanCancel,
canceledOnTouchOutside, isAutoHide, l, backListener, dismissAfterBack,context);
setHelloDialog(mDialog, avatar, gender, title, message, okLabel, cancelLabel, isCanCancel,
canceledOnTouchOutside, isAutoHide, l, backListener, dismissAfterBack, context);
}
@@ -492,7 +487,7 @@ public class DialogManager {
}
/**
* @param title 不需要则传空
* @param title 不需要则传空
* @param messages 黑色文字和主题色文字轮着来的一个字符串数组
*/
public void showOkCancelDialog(CharSequence title, CharSequence[] messages,
@@ -515,7 +510,7 @@ public class DialogManager {
/**
* @param messages 黑色文字和主题色文字轮着来的一个字符串数组
*/
public void showOkCancelWithTitleDialog(CharSequence [] messages,
public void showOkCancelWithTitleDialog(CharSequence[] messages,
final OkCancelDialogListener l) {
showOkCancelDialog(getContext().getString(R.string.common_tip), messages, l);
}
@@ -937,13 +932,13 @@ public class DialogManager {
return switchTips != null && switchTips.isChecked();
}
public interface OnKeyBackListener{
public interface OnKeyBackListener {
void onBack();
}
/**
* 注释 见 {@link DialogManager#showOkCancelDialog(
* CharSequence, CharSequence, CharSequence, CharSequence, boolean,
*CharSequence, CharSequence, CharSequence, CharSequence, boolean,
* boolean, boolean, OkCancelDialogListener, OnKeyBackListener, boolean)}
*/
public static void setDialog(Dialog dialog, CharSequence title, CharSequence message, CharSequence okLabel,
@@ -1014,13 +1009,13 @@ public class DialogManager {
/**
* 注释 见 {@link DialogManager#showOkCancelDialog(
* CharSequence, CharSequence, CharSequence, CharSequence, boolean,
*CharSequence, CharSequence, CharSequence, CharSequence, boolean,
* boolean, boolean, OkCancelDialogListener, OnKeyBackListener, boolean)}
*/
public static void setHelloDialog(Dialog dialog,String avatar,int gender, CharSequence title, CharSequence message, CharSequence okLabel,
CharSequence cancelLabel, boolean isCanCancel, boolean canceledOnTouchOutside,
final boolean isAutoHide, final OkCancelDialogListener l,
final OnKeyBackListener backListener, boolean dismissAfterBack,Context context) {
public static void setHelloDialog(Dialog dialog, String avatar, int gender, CharSequence title, CharSequence message, CharSequence okLabel,
CharSequence cancelLabel, boolean isCanCancel, boolean canceledOnTouchOutside,
final boolean isAutoHide, final OkCancelDialogListener l,
final OnKeyBackListener backListener, boolean dismissAfterBack, Context context) {
dialog.setCancelable(isCanCancel);
dialog.setCanceledOnTouchOutside(canceledOnTouchOutside);
@@ -1028,8 +1023,8 @@ public class DialogManager {
window.setContentView(R.layout.layout_newbie_hello_dialog);
//头像
RoundedImageView ivAvatar = window.findViewById(R.id.iv_avatar);
if (ivAvatar != null){
if (!TextUtils.isEmpty(avatar)){
if (ivAvatar != null) {
if (!TextUtils.isEmpty(avatar)) {
ivAvatar.setVisibility(View.VISIBLE);
GlideApp.with(context)
.load(avatar)
@@ -1037,7 +1032,7 @@ public class DialogManager {
// .transforms(new CenterCrop(),
// new RoundedCorners(context.getResources().getDimensionPixelOffset(R.dimen.dp_6)))
.into(ivAvatar);
}else {
} else {
ivAvatar.setVisibility(View.GONE);
}
}
@@ -1103,7 +1098,7 @@ public class DialogManager {
}
public static Dialog createDialog(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.MyAlertDialogStyle);
AlertDialog.Builder builder = new BaseAlertDialogBuilder(context, R.style.MyAlertDialogStyle);
return builder.create();
}

View File

@@ -37,6 +37,7 @@ import com.trello.rxlifecycle3.android.ActivityEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.common.widget.dialog.BaseAlertDialogBuilder;
import com.yizhuan.erban.ui.im.RouterHandler;
import com.yizhuan.erban.ui.webview.event.ShowNavEvent;
import com.yizhuan.erban.ui.webview.event.TaroPayResultEvent;
@@ -61,12 +62,13 @@ import java.util.Map;
import cn.sharesdk.framework.Platform;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.autosize.internal.CancelAdapt;
/**
* @author Administrator
*/
public class CommonWebViewActivity extends BaseActivity implements ShareDialog.OnShareDialogItemClick {
public class CommonWebViewActivity extends BaseActivity implements ShareDialog.OnShareDialogItemClick, CancelAdapt {
protected FrameLayout layoutTitleBar;
protected WebView webView;
@@ -235,7 +237,7 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O
try {
CommonWebViewActivity.this.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
} catch (Exception e) {
new AlertDialog.Builder(CommonWebViewActivity.this)
new BaseAlertDialogBuilder(CommonWebViewActivity.this)
.setMessage("未检测到支付宝客户端,请安装后重试。")
.setPositiveButton("立即安装", (dialog, which) -> {
Uri alipayUrl = Uri.parse("https://d.alipay.com");

View File

@@ -1,11 +1,9 @@
package com.yizhuan.erban.ui.webview;
import android.app.AlertDialog;
import android.content.Intent;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import android.text.TextUtils;
import android.webkit.SslErrorHandler;
import android.webkit.WebSettings;
@@ -15,6 +13,7 @@ import android.webkit.WebViewClient;
import com.orhanobut.logger.Logger;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseBindingFragment;
import com.yizhuan.erban.common.widget.dialog.BaseAlertDialogBuilder;
import com.yizhuan.erban.databinding.FragmentCommonWebViewBinding;
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
@@ -49,7 +48,7 @@ public class CommonWebViewFragment extends BaseBindingFragment<FragmentCommonWeb
try {
CommonWebViewFragment.this.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
} catch (Exception e) {
new AlertDialog.Builder(CommonWebViewFragment.this.mContext)
new BaseAlertDialogBuilder(CommonWebViewFragment.this.mContext)
.setMessage("未检测到支付宝客户端,请安装后重试。")
.setPositiveButton("立即安装", (dialog, which) -> {
Uri alipayUrl = Uri.parse("https://d.alipay.com");

View File

@@ -18,12 +18,14 @@ package com.zhihu.matisse.internal.ui.widget;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.appcompat.app.AlertDialog;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import com.yizhuan.erban.R;
import com.yizhuan.erban.common.widget.dialog.BaseAlertDialogBuilder;
public class IncapableDialog extends DialogFragment {
@@ -45,7 +47,7 @@ public class IncapableDialog extends DialogFragment {
String title = getArguments().getString(EXTRA_TITLE);
String message = getArguments().getString(EXTRA_MESSAGE);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
AlertDialog.Builder builder = new BaseAlertDialogBuilder(getActivity());
if (!TextUtils.isEmpty(title)) {
builder.setTitle(title);
}

View File

@@ -28,14 +28,6 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.core.content.ContextCompat;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
@@ -44,6 +36,14 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.yizhuan.erban.R;

View File

@@ -115,7 +115,7 @@ public class NetworkUtils {
}
// public static void showNetworkConfigDialog(final Context c, int msgId, int posStrId, int negStrId) {
// final AlertDialog dialog = new AlertDialog.Builder(c).create();
// final AlertDialog dialog = new BaseAlertDialogBuilder(c).create();
//
// dialog.show();
// Window window = dialog.getWindow();