| | |
| | | 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.PushUtil; |
| | | import com.tejia.lijin.app.util.TestUtil; |
| | | import com.tejia.lijin.app.util.ToolUtil; |
| | | |
| | |
| | | |
| | | public class ShoppingApplication extends Application { |
| | | |
| | | private static final String TAG = "ShoppingApplication"; |
| | | public static ShoppingApplication application = null; |
| | | public static boolean isJDInit = false; |
| | | |
| | |
| | | @Override |
| | | public void onCreate() { |
| | | super.onCreate(); |
| | | application = this; |
| | | disableAPIDialog(); |
| | | //测试注入用户信息 |
| | | TestUtil.pourIntoUserInfo(getApplicationContext()); |
| | | initAD(); |
| | | if (UserUtil.isAgreeUserProtocol(application)) { |
| | | init(application); |
| | | } |
| | | } |
| | | |
| | | |
| | | public static void init(final Application application) { |
| | | 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; |
| | | UMConfigure.init(application, UMConfigure.DEVICE_TYPE_PHONE, null); |
| | | |
| | | 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 |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 反射 禁止弹窗 |
| | | */ |
| | | private void disableAPIDialog(){ |
| | | if (Build.VERSION.SDK_INT < 28)return; |
| | | private void disableAPIDialog() { |
| | | if (Build.VERSION.SDK_INT < 28) return; |
| | | try { |
| | | Class clazz = Class.forName("android.app.ActivityThread"); |
| | | Method currentActivityThread = clazz.getDeclaredMethod("currentActivityThread"); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 京东联盟 |
| | | * |
| | | * @param application |
| | | */ |
| | | public static void initJd(Application application) { |
| | | //京东联盟 |
| | | final String appKey = "0370d4db71dc8d24581e59cabda231f1"; //"7ba8e06b7d6fde3d6bd5db4b0026ecd7"; |
| | | final String appSecret = "21d22579c7c5487c8d73bff2b82b01cc"; //"fb49bc6ecac5458ba5394fc2969d7c56"; |
| | | 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, "京东初始化失败"); |
| | | } |
| | | |
| | | }); |
| | |
| | | return false; |
| | | } |
| | | |
| | | private void initAD(){ |
| | | GDTADManager.getInstance().initWith(this,"1110527324"); |
| | | /** |
| | | * 穿山甲广告初始化 |
| | | */ |
| | | 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) { |
| | | |
| | | } |
| | | } |
| | | |
| | | } |