AndroidAutoSize 弹窗和第三方页面适配
This commit is contained in:
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@@ -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 点击返回键是否可以取消,默认=false,dialog初始化的时候,为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 点击返回键是否可以取消,默认=false,dialog初始化的时候,为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();
|
||||
}
|
||||
|
||||
|
@@ -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");
|
||||
|
@@ -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");
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user