package com.rehome.dywoa; import android.app.Application; import android.content.Context; import android.text.TextUtils; import android.util.Log; import androidx.multidex.MultiDex; import com.just.agentweb.AgentWebCompat; import com.rehome.dywoa.bean.UserInfoBean; import com.rehome.dywoa.utils.DpPxSpTransformUtil; import com.rehome.dywoa.utils.SPUtils; import com.sangfor.sdk.base.SFSDKExtras; 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 com.sangfor.sdk.SFUemSDK; import com.sangfor.sdk.base.SFSDKFlags; import com.sangfor.sdk.base.SFSDKMode; import com.rehome.dywoa.vpn.GlobalListenerManager; import java.util.HashMap; import java.util.Map; public class App extends LitePalApplication { public static Context context = null; private UserInfoBean.UserInfo userInfo; private static App mInstance; public static Context mContext; public static App getInstance() { return mInstance; } @Override public void onCreate() { super.onCreate(); context = this; mInstance = this; NoHttp.initialize(this); MultiDex.install(this); NoHttp.setDefaultConnectTimeout(3 * 1000); NoHttp.setDefaultReadTimeout(120 * 1000); initUser(); AutoLayoutConifg.getInstance().useDeviceSize(); XUI.init(this); //初始化UI框架 CrashReport.initCrashReport(getApplicationContext(), "f147ce3be5", true); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(base); mContext = base; AgentWebCompat.setDataDirectorySuffix(base); /** * 初始化深信服sdk,推荐在attachBaseContext中调用,因为sdk延后初始化会导致多进程场景下,子进程无法拥有sdk的能力 */ initSdk(base); /** * 初始化深信服注销监听回调 */ GlobalListenerManager.getInstance().init(base); /** * 初始化深信服dp,sp转px的工具类 */ DpPxSpTransformUtil.init(getResources().getDisplayMetrics().density); } 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); } public void clearUser() { this.userInfo = null; SPUtils.clearUser(this); } public void showLog(String logText) { if (BuildConfig.LOG_ERROR) { if (TextUtils.isEmpty(logText)) { Log.i("app", "logText is null"); } else { Log.i("app", logText); } } } void initSdk(Context context) { SFSDKMode sdkMode = SFSDKMode.MODE_SUPPORT_MUTABLE; // 表明启用可变授权功能,详情参考集成指导文档 switch (sdkMode) { case MODE_SUPPORT_MUTABLE: case MODE_VPN: { //只使用VPN功能场景 //Map extra = new HashMap<>(); 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: { showLog("SDK模式错误"); } } } }