You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

294 lines
10 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.rehome.zhdcoa;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.emoji.bundled.BundledEmojiCompatConfig;
import androidx.emoji.text.EmojiCompat;
import androidx.multidex.MultiDex;
//import com.blankj.utilcode.util.Utils;
import com.github.mikephil.charting.utils.Utils;
//import com.hjq.http.EasyConfig;
//import com.hjq.http.config.IRequestInterceptor;
//import com.hjq.http.config.IRequestServer;
//import com.hjq.http.model.HttpHeaders;
//import com.hjq.http.model.HttpParams;
import com.rehome.zhdcoa.bean.UserInfoBean;
import com.rehome.zhdcoa.ui.activity.VpnAuthActivity;
import com.rehome.zhdcoa.utils.DpPxSpTransformUtil;
import com.rehome.zhdcoa.utils.SPUtils;
//import com.squareup.leakcanary.LeakCanary;
//import com.squareup.leakcanary.RefWatcher;
import com.rehome.zhdcoa.vpn.GlobalListenerManager;
import com.sangfor.sdk.SFUemSDK;
import com.sangfor.sdk.base.SFBaseMessage;
import com.sangfor.sdk.base.SFSDKExtras;
import com.sangfor.sdk.base.SFSDKFlags;
import com.sangfor.sdk.base.SFSDKMode;
import com.sangfor.sdk.base.SFSetSpaConfigListener;
import com.sangfor.sdk.utils.SFLogN;
import com.tencent.bugly.crashreport.CrashReport;
import com.xuexiang.xui.XUI;
import com.yolanda.nohttp.NoHttp;
import com.zhy.autolayout.config.AutoLayoutConifg;
import org.litepal.LitePalApplication;
import java.util.HashMap;
import java.util.Map;
public class App extends LitePalApplication {
private UserInfoBean.UserInfo userInfo;
private String DateSave;
public String getDateSave() {
return DateSave;
}
public void setDateSave(String dateSave) {
DateSave = dateSave;
}
private static App mInstance;
//public static boolean mIsInitTBSSuccess = false;
public static boolean mqttIsInit = false;
private int activityAount = 0;
private boolean isForeground = false;
public static Context mContext;
public static App getInstance() {
return mInstance;
}
//private RefWatcher refWatcher;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
// if (LeakCanary.isInAnalyzerProcess(this)) { //1
// // This process is dedicated to LeakCanary for heap analysis.
// // You should not init your app in this process.
// return;
// }
//refWatcher = LeakCanary.install(this);
NoHttp.initialize(this);
MultiDex.install(this);
NoHttp.setDefaultConnectTimeout(6 * 1000);
NoHttp.setDefaultReadTimeout(60 * 1000);
initUser();
AutoLayoutConifg.getInstance().useDeviceSize();
Utils.init(this);
XUI.init(this); //初始化UI框架
CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(getApplicationContext());
// 通过UserStrategy设置
strategy.setDeviceModel(Build.MODEL);
CrashReport.initCrashReport(getApplicationContext(), "13d735012a", true, strategy);
loadEmojiFromBundled();
//BuildConfig.DEBUG
// 网络请求框架初始化
// IRequestServer server;
// if (BuildConfig.DEBUG) {
// server = new TestServer();
// } else {
// server = new ReleaseServer();
// }
//
// OkHttpClient okHttpClient = new OkHttpClient.Builder()
// .build();
//
// EasyConfig.with(okHttpClient)
// // 是否打印日志
// //.setLogEnabled(BuildConfig.DEBUG)
// // 设置服务器配置
// .setServer(server)
// // 设置请求处理策略
// .setHandler(new RequestHandler(this))
// // 设置请求参数拦截器
// .setInterceptor(new IRequestInterceptor() {
// @Override
// public void intercept(String url, String tag, HttpParams params, HttpHeaders headers) {
// headers.put("timestamp", String.valueOf(System.currentTimeMillis()));
// }
// })
// // 设置请求重试次数
// .setRetryCount(1)
// // 设置请求重试时间
// .setRetryTime(1000)
// // 添加全局请求参数
// .addParam("token", "6666666")
// // 添加全局请求头
// //.addHeader("time", "20191030")
// .into();
}
private void initUser() {
this.userInfo = SPUtils.getUser(this);
}
public UserInfoBean.UserInfo getUserInfo() {
return userInfo;
}
public void setUserInfo(UserInfoBean.UserInfo userInfo) {
this.userInfo = userInfo;
SPUtils.putUser(this, userInfo);
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
mContext = base;
/**
* 初始化深信服sdk,推荐在attachBaseContext中调用因为sdk延后初始化会导致多进程场景下子进程无法拥有sdk的能力
* 初始化深信服注销监听回调
* 初始化深信服dpsp转px的工具类
*/
if (isApkInDebug(base)) {
showLog("attachBaseContext base");
initSdk(base);
GlobalListenerManager.getInstance().init(base);
DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density);
// String config = "{\"loginAddress\":\"https://vpn.zhp.geg.com.cn:55420\", \"spaSecret\":\"7FFQ-rWE5-V6xX\"}";
// SFUemSDK.setSpaConfig(config, new SFSetSpaConfigListener() {
// @Override
// public void onSetSpaConfig(String result, SFBaseMessage error) {
// SFLogN.info("app", "spa result:"+ result + ", error:" + error);
// Log.i("app", "spa result:"+ result + ", error:" + error);
// if (error.mErrCode != 0) {
// Toast.makeText(mContext,
// "SPA设置失败"+ ", Error Message:" + error.toString(),
// Toast.LENGTH_SHORT)
// .show();
// } else {
// Toast.makeText(mContext, "SPA设置成功 result:" + result,
// Toast.LENGTH_SHORT)
// .show();
// }
// }
// });
}
}
public void clearUser() {
this.userInfo = null;
SPUtils.clearUser(this);
}
private void loadEmojiFromBundled() {
EmojiCompat.Config config = new BundledEmojiCompatConfig(getApplicationContext());
config.setReplaceAll(true)
.registerInitCallback(new EmojiCompat.InitCallback()
{
@Override
public void onInitialized()
{
//Log.i("app", "loadEmojiFromBundled()->onInitialized()");
}
@Override
public void onFailed(@Nullable Throwable throwable)
{
//Log.e("app", "loadEmojiFromBundled()->onFailed()", throwable);
}
});
EmojiCompat.init(config);
}
// public static RefWatcher getRefWatcher(Context context) {
// App application = (App) context.getApplicationContext();
// return application.refWatcher;
// }
/**
* 判断当前应用是否是debug状态
*/
public static boolean isApkInDebug(Context context) {
try {
ApplicationInfo info = context.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
return false;
}
}
public static String getApplicationId(Context context) {
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();
try {
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
return applicationInfo.packageName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return null;
}
}
public void showLog(String logText) {
if (isApkInDebug(mContext)) {
if (TextUtils.isEmpty(logText)) {
Log.i("app", "logText is null");
} else {
Log.i("app", logText);
}
}
}
void initSdk(Context context) {
Map<SFSDKExtras, String> extra = new HashMap<>();
SFSDKMode sdkMode = SFSDKMode.MODE_SUPPORT_MUTABLE; // 表明启用可变授权功能,详情参考集成指导文档
switch (sdkMode) {
case MODE_SUPPORT_MUTABLE:{
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP; //表明使用VPN功能中的TCP模式
SFUemSDK.getInstance().initSDK(this, sdkMode,sdkFlags,extra);
break;
}
case MODE_VPN: { //只使用VPN功能场景
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP; //表明使用VPN功能中的TCP模式
SFUemSDK.getInstance().initSDK(this, sdkMode,sdkFlags,null);
break;
}
case MODE_SANDBOX: { //只使用安全沙箱功能场景
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
SFUemSDK.getInstance().initSDK(this, sdkMode,sdkFlags,null);
break;
}
case MODE_VPN_SANDBOX: { //同时使用VPN功能+安全沙箱功能场景
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP; //表明使用VPN功能中的TCP模式
SFUemSDK.getInstance().initSDK(this, sdkMode,sdkFlags,null);
break;
}
default: {
Toast.makeText(context, "SDK模式错误", Toast.LENGTH_LONG).show();
}
}
}
}