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.

161 lines
5.4 KiB
Java

1 year ago
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;
1 year ago
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;
1 year ago
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);
1 year ago
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
mContext = base;
AgentWebCompat.setDataDirectorySuffix(base);
/**
* sdk,attachBaseContextsdksdk
*
* dpsppx
*/
initSdk(base);
GlobalListenerManager.getInstance().init(base);
1 year ago
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)) {
1 year ago
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; //表明是单应用或者是主应用
1 year ago
sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP; //表明使用VPN功能中的TCP模式
SFUemSDK.getInstance().initSDK(this, sdkMode, sdkFlags, null);
1 year ago
break;
}
case MODE_SANDBOX: { //只使用安全沙箱功能场景
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
SFUemSDK.getInstance().initSDK(this, sdkMode, sdkFlags, null);
1 year ago
break;
}
case MODE_VPN_SANDBOX: { //同时使用VPN功能+安全沙箱功能场景
int sdkFlags = SFSDKFlags.FLAGS_HOST_APPLICATION; //表明是单应用或者是主应用
1 year ago
sdkFlags |= SFSDKFlags.FLAGS_VPN_MODE_TCP; //表明使用VPN功能中的TCP模式
SFUemSDK.getInstance().initSDK(this, sdkMode, sdkFlags, null);
1 year ago
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;
}
}
1 year ago
}