admin
2022-08-09 399ac289f80b7a40aa4210341db6b447cacdcf14
app/src/main/java/com/tejia/lijin/app/ShoppingApplication.java
@@ -1,35 +1,49 @@
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 android.widget.Toast;
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.LocationProvider;
import com.bytedance.sdk.openadsdk.TTAdConfig;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.bytedance.sdk.openadsdk.TTCustomController;
import com.kepler.jd.Listener.AsyncInitListener;
import com.kepler.jd.login.KeplerApiManager;
import com.qq.e.comm.managers.GDTADManager;
import com.qq.e.comm.managers.GDTAdSdk;
import com.qq.e.comm.managers.setting.GlobalSetting;
import com.tejia.lijin.app.ui.SplashActivity;
import com.tejia.lijin.app.util.Constant;
import com.tejia.lijin.app.util.ad.TTAdManagerHolder;
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.ManifestDataUtil;
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.PushUtil;
import com.tejia.lijin.app.util.TestUtil;
import com.tejia.lijin.app.util.ToolUtil;
import com.wpc.library.util.common.DeviceUtil;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -43,38 +57,53 @@
public class ShoppingApplication extends Application {
    private static final String TAG = "ShoppingApplication";
    public static ShoppingApplication application = null;
    public static boolean isJDInit = false;
    public static boolean init = false;
//    public Tencent mTencent;
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG, "onCreate");
        application = this;
        disableAPIDialog();
        //测试注入用户信息
        TestUtil.pourIntoUserInfo(getApplicationContext());
        initAD();
        if (UserUtil.isAgreeUserProtocol(application)) {
            init(application);
        }
    }
    public static void init(final Application application) {
        init = true;
        GoodsDetailUtil.initInstallTime(application);
        initAD(application);
        //进程名字
        String processName = ToolUtil.getProcessName(this, android.os.Process.myPid());
        String processName = ToolUtil.getProcessName(application, android.os.Process.myPid());
        if (processName != null) {//防止重复创建
            boolean defaultProcess = processName.equals(getPackageName());//主进程名字
            boolean defaultProcess = processName.equals(application.getPackageName());//主进程名字
            if (!defaultProcess) {//不是主进程 阻止往下执行
                return;
            }
        }
        MultiDex.install(this);
        MultiDex.install(application);
        if (BuXinConstant.DEBUG) {//异常信息收集
            CrashHandler.getInstance().init(getApplicationContext());
            CrashHandler.getInstance().init(application);
        }
        UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, null);
        application = this;
        String channel = ManifestDataUtil.getAppMetaData(application, "UMENG_CHANNEL");
        UMConfigure.init(application, application.getResources().getString(R.string.umeng_key), channel, UMConfigure.DEVICE_TYPE_PHONE, null);
        UMConfigure.setEncryptEnabled(true);
        MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
        if (!AlibcTradeSDK.initState.isInitialized() && !AlibcTradeSDK.initState.isInitializing())
            AlibcTradeSDK.asyncInit(this, new AlibcTradeInitCallback() {
            AlibcTradeSDK.asyncInit(application, new AlibcTradeInitCallback() {
                @Override
                public void onSuccess() {
//                AlibcTradeSDK.setTaokeParams(new AlibcTaokeParams(BuXinConstant.BAICHUAN_PID, "", null));
@@ -96,18 +125,30 @@
                }
            });
        PushUtil.inintPush(this);
        ToolUtil.thirdPartySDK();//初始化第三方SDK
        if (NetUtils.isNetConnected(getApplicationContext())) {
            initJd(this);
        initWX();
        if (NetUtils.isNetConnected(application)) {
            initJd(application);
        } else {
            try {
                startService(new Intent(getApplicationContext(), NetworkStateService.class));
                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);
    }
    /**
@@ -140,10 +181,12 @@
        KeplerApiManager.asyncInitSdk(application, appKey, appSecret, new AsyncInitListener() {
            @Override
            public void onSuccess() {
                Log.i(TAG, "京东初始化成功");
            }
            @Override
            public void onFailure() {
                Log.i(TAG, "京东初始化失败");
            }
        });
@@ -166,24 +209,92 @@
    /**
     * 穿山甲广告初始化
     */
    private void initAD() {
        GDTADManager.getInstance().initWith(this, Constant.GDT_APP_ID);
    private static void initAD(final Context context) {
        try {
            GlobalSetting.setEnableCollectAppInstallStatus(false);
            GDTAdSdk.init(application, Constant.GDT_APP_ID);
        TTAdSdk.init(getApplicationContext(),
                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());
            TTAdManagerHolder.init(context, new TTAdSdk.InitCallback() {
                @Override
                public void success() {
                   Log.i(TAG, "穿山甲初始化成功");
                }
                @Override
                public void fail(int i, String s) {
                    Log.e(TAG, "穿山甲初始化失败:"+s);
                }
            });
        } 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) {
        }
    }
}