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.

164 lines
5.5 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.dywoa;
import android.app.Application;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
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);
String applicationId = App.getApplicationId(context);
showLog(applicationId);
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
mContext = base;
AgentWebCompat.setDataDirectorySuffix(base);
/**
* 初始化深信服sdk,推荐在attachBaseContext中调用因为sdk延后初始化会导致多进程场景下子进程无法拥有sdk的能力
* 初始化深信服注销监听回调
* 初始化深信服dpsp转px的工具类
*/
if (isApkInDebug(base)) {
showLog("attachBaseContext base");
initSdk(base);
GlobalListenerManager.getInstance().init(base);
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 (isApkInDebug(context)) {
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<SFSDKExtras, String> 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模式错误");
}
}
}
/**
* 判断当前应用是否是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;
}
}
}