package com.tejia.lijin.app;
|
|
import android.app.Activity;
|
import android.app.ActivityManager;
|
import android.app.Application;
|
import android.content.ComponentName;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.os.Process;
|
|
import androidx.multidex.MultiDex;
|
import de.greenrobot.event.EventBus;
|
|
import android.util.Log;
|
|
import com.alibaba.baichuan.android.trade.AlibcTradeSDK;
|
import com.alibaba.baichuan.android.trade.callback.AlibcTradeInitCallback;
|
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
|
import com.bytedance.sdk.openadsdk.TTAdConfig;
|
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
import com.bytedance.sdk.openadsdk.TTAdSdk;
|
import com.kepler.jd.Listener.AsyncInitListener;
|
import com.kepler.jd.login.KeplerApiManager;
|
import com.qq.e.comm.managers.GDTADManager;
|
import com.tejia.lijin.app.ui.SplashActivity;
|
import com.tejia.lijin.app.util.Constant;
|
import com.tejia.lijin.app.util.ui.GoodsDetailUtil;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.tencent.mm.opensdk.openapi.IWXAPI;
|
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
|
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.commonsdk.UMConfigure;
|
import com.wpc.library.util.NetUtils;
|
import com.tejia.lijin.app.service.NetworkStateService;
|
import com.tejia.lijin.app.util.CrashHandler;
|
import com.tejia.lijin.app.util.TestUtil;
|
import com.tejia.lijin.app.util.ToolUtil;
|
|
import java.lang.reflect.Field;
|
import java.lang.reflect.Method;
|
import java.util.HashMap;
|
import java.util.List;
|
|
|
/**
|
* Created by weikou2015 on 2017/2/20.
|
*/
|
|
public class ShoppingApplication extends Application {
|
|
private static final String TAG = "ShoppingApplication";
|
public static ShoppingApplication application = null;
|
public static boolean isJDInit = false;
|
|
// public Tencent mTencent;
|
|
@Override
|
public void onCreate() {
|
super.onCreate();
|
application = this;
|
disableAPIDialog();
|
//测试注入用户信息
|
TestUtil.pourIntoUserInfo(getApplicationContext());
|
if (UserUtil.isAgreeUserProtocol(application)) {
|
init(application);
|
}
|
}
|
|
|
public static void init(final Application application) {
|
GoodsDetailUtil.initInstallTime(application);
|
initAD(application);
|
//进程名字
|
String processName = ToolUtil.getProcessName(application, android.os.Process.myPid());
|
if (processName != null) {//防止重复创建
|
boolean defaultProcess = processName.equals(application.getPackageName());//主进程名字
|
if (!defaultProcess) {//不是主进程 阻止往下执行
|
return;
|
}
|
}
|
|
MultiDex.install(application);
|
if (BuXinConstant.DEBUG) {//异常信息收集
|
CrashHandler.getInstance().init(application);
|
}
|
|
UMConfigure.init(application, UMConfigure.DEVICE_TYPE_PHONE, null);
|
|
if (!AlibcTradeSDK.initState.isInitialized() && !AlibcTradeSDK.initState.isInitializing())
|
AlibcTradeSDK.asyncInit(application, new AlibcTradeInitCallback() {
|
@Override
|
public void onSuccess() {
|
// AlibcTradeSDK.setTaokeParams(new AlibcTaokeParams(BuXinConstant.BAICHUAN_PID, "", null));
|
AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("", "", "");
|
AlibcTradeSDK.setTaokeParams(alibcTaokeParams);
|
alibcTaokeParams.setPid(BuXinConstant.BAICHUAN_PID);
|
alibcTaokeParams.setAdzoneid(BuXinConstant.BAICHUAN_ADZONE_ID);
|
alibcTaokeParams.pid = BuXinConstant.BAICHUAN_PID;
|
alibcTaokeParams.adzoneid = BuXinConstant.BAICHUAN_ADZONE_ID;
|
alibcTaokeParams.extraParams = new HashMap<>();
|
alibcTaokeParams.extraParams.put("taokeAppkey", BuXinConstant.TAO_BAO_KE_KEY);
|
Log.e("mResult", "初始化成功");
|
}
|
|
@Override
|
public void onFailure(int i, String s) {
|
MobclickAgent.reportError(application, "ShoppingApplication---code:" + i + "---msg:" + s);
|
Log.e("mResult", "初始化失败---" + i + "---" + s);
|
}
|
});
|
|
ToolUtil.thirdPartySDK();//初始化第三方SDK
|
initWX();
|
if (NetUtils.isNetConnected(application)) {
|
initJd(application);
|
} else {
|
try {
|
application.startService(new Intent(application, NetworkStateService.class));
|
} catch (Exception e) {
|
|
}
|
}
|
|
application.registerActivityLifecycleCallbacks(MyActivityLifecycleCallbacks.getInstance());
|
|
}
|
|
/**
|
* 初始化微信SDK
|
*/
|
private static void initWX() {
|
//AppConst.WEIXIN.APP_ID是指你应用在微信开放平台上的AppID,记得替换。
|
ShoppingApplication.application.mWxApi = WXAPIFactory.createWXAPI(ShoppingApplication.application, Constant.WX_APP_ID, false);
|
// 将该app注册到微信
|
ShoppingApplication.application.mWxApi.registerApp(Constant.WX_APP_ID);
|
}
|
|
/**
|
* 反射 禁止弹窗
|
*/
|
private void disableAPIDialog() {
|
if (Build.VERSION.SDK_INT < 28) return;
|
try {
|
Class clazz = Class.forName("android.app.ActivityThread");
|
Method currentActivityThread = clazz.getDeclaredMethod("currentActivityThread");
|
currentActivityThread.setAccessible(true);
|
Object activityThread = currentActivityThread.invoke(null);
|
Field mHiddenApiWarningShown = clazz.getDeclaredField("mHiddenApiWarningShown");
|
mHiddenApiWarningShown.setAccessible(true);
|
mHiddenApiWarningShown.setBoolean(activityThread, true);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 京东联盟
|
*
|
* @param application
|
*/
|
public static void initJd(Application application) {
|
//京东联盟
|
final String appKey = Constant.JD_APP_KEY;
|
final String appSecret = Constant.JD_APP_SECRET;
|
KeplerApiManager.asyncInitSdk(application, appKey, appSecret, new AsyncInitListener() {
|
@Override
|
public void onSuccess() {
|
Log.i(TAG, "京东初始化成功");
|
}
|
|
@Override
|
public void onFailure() {
|
Log.i(TAG, "京东初始化失败");
|
}
|
|
});
|
isJDInit = true;
|
}
|
|
private boolean shouldInit() {
|
ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
|
List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
|
String mainProcessName = getPackageName();
|
int myPid = Process.myPid();
|
for (ActivityManager.RunningAppProcessInfo info : processInfos) {
|
if (info.pid == myPid && mainProcessName.equals(info.processName)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 穿山甲广告初始化
|
*/
|
private static void initAD(Context context) {
|
try {
|
GDTADManager.getInstance().initWith(context, Constant.GDT_APP_ID);
|
|
TTAdSdk.init(context,
|
new TTAdConfig.Builder()
|
.appId(Constant.CSJ_APP_ID)
|
.useTextureView(true) //默认使用SurfaceView播放视频广告,当有SurfaceView冲突的场景,可以使用TextureView
|
.appName("特价")
|
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)//落地页主题
|
.allowShowNotify(true) //是否允许sdk展示通知栏提示
|
.debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
|
.directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允许直接下载的网络状态集合,没有设置的网络下点击下载apk会有二次确认弹窗,弹窗中会披露应用信息
|
.supportMultiProcess(false) //是否支持多进程,true支持
|
.asyncInit(true) //是否异步初始化sdk,设置为true可以减少SDK初始化耗时。3450版本开始废弃~~
|
//.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
|
.build());
|
} catch (Exception e) {
|
|
}
|
}
|
|
public IWXAPI mWxApi;
|
|
|
static class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
|
private int mFinalCount;
|
private static MyActivityLifecycleCallbacks instance;
|
|
public static MyActivityLifecycleCallbacks getInstance() {
|
if (instance == null) {
|
instance = new MyActivityLifecycleCallbacks();
|
}
|
return instance;
|
}
|
|
@Override
|
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
|
|
}
|
|
@Override
|
public void onActivityStarted(Activity activity) {
|
mFinalCount++;
|
//如果mFinalCount ==1,说明是从后台到前台
|
if (mFinalCount == 1) {
|
Log.e(TAG, "应用从后台切换到前台");
|
// 进入前台 改为热启动
|
//判断当前activity
|
ActivityManager am = (ActivityManager) activity.getSystemService(ACTIVITY_SERVICE);
|
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
|
if (!cn.getClassName().equalsIgnoreCase(SplashActivity.class.getName())) {
|
|
}
|
|
}
|
}
|
|
@Override
|
public void onActivityResumed(Activity activity) {
|
|
}
|
|
@Override
|
public void onActivityPaused(Activity activity) {
|
|
}
|
|
@Override
|
public void onActivityStopped(Activity activity) {
|
mFinalCount--;
|
//如果mFinalCount ==0,说明是前台到后台
|
if (mFinalCount == 0) {
|
Log.e(TAG, "应用从前台切换到后台");
|
}
|
|
}
|
|
@Override
|
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
|
|
}
|
|
@Override
|
public void onActivityDestroyed(Activity activity) {
|
|
}
|
}
|
|
}
|