| | |
| | | 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; |
| | |
| | | |
| | | 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)); |
| | |
| | | } |
| | | }); |
| | | |
| | | PushUtil.inintPush(this); |
| | | ToolUtil.thirdPartySDK();//初始化第三方SDK |
| | | initWX(); |
| | | if (NetUtils.isNetConnected(getApplicationContext())) { |
| | | initJd(this); |
| | | 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()); |
| | | |
| | | } |
| | | |
| | |
| | | KeplerApiManager.asyncInitSdk(application, appKey, appSecret, new AsyncInitListener() { |
| | | @Override |
| | | public void onSuccess() { |
| | | Log.i(TAG, "京东初始化成功"); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure() { |
| | | Log.i(TAG, "京东初始化失败"); |
| | | } |
| | | |
| | | }); |
| | |
| | | /** |
| | | * 穿山甲广告初始化 |
| | | */ |
| | | 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) { |
| | | |
| | | } |
| | | } |
| | | |
| | | } |