123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package com.edufound.android.xyyf.application;
- import android.app.Activity;
- import android.app.ActivityManager;
- import android.app.Application;
- import android.content.Context;
- import android.content.Intent;
- import android.content.pm.ApplicationInfo;
- import android.content.pm.PackageManager;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import com.edufound.android.xyyf.R;
- import com.edufound.android.xyyf.pay.PayInit;
- import com.edufound.android.xyyf.util.ContextUtil;
- import com.edufound.android.xyyf.util.Logger;
- import com.edufound.android.xyyf.util.OKHttpUtil;
- import com.edufound.android.xyyf.util.SPutil;
- import org.android.agoo.vivo.VivoRegister;
- import org.android.agoo.xiaomi.MiPushRegistar;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import okhttp3.Request;
- public class EApplication extends Application {
- final String XIAOMI_ID = "";
- final String XIAOMI_KEY = "";
- static String mUMengAppID;
- private int activityAount = 0;
- public boolean isForeground = false;
- public static long APP_START_TIME = 0;
- @Override
- public void onCreate() {
- super.onCreate();
- ContextUtil.setContext(this);
- ContextUtil.setApplication(this);
- //上线关掉debug模式
- ContextUtil.setIsDebug(true);
- mUMengAppID = getChannelName();
- APP_START_TIME = System.currentTimeMillis();
- //根据appcode初始化支付sdk
- // UMConfigure.setLogEnabled(true);
- // UMConfigure.init(this, "5ffbb9e0f1eb4f3f9b58b05e", getAppCode() + "", UMConfigure.DEVICE_TYPE_PHONE, "dfc59afd6dc6b1550ff1c2e0c7eb10fd");
- // PushAgent mPushAgent = PushAgent.getInstance(this);
- // mPushAgent.register(new IUmengRegisterCallback() {
- // @Override
- // public void onSuccess(String deviceToken) {
- // Logger.e("DeviceToken:" + deviceToken);
- // }
- //
- // @Override
- // public void onFailure(String s, String s1) {
- // Logger.e("注册失败:--------> " + "s:" + s + ",s1:" + s1);
- // }
- // });
- registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
- PayInit.getInstance().initPaySDK(Integer.valueOf(getAppCode()), EApplication.this);
- if (!getPackageName().equals(
- getProcessName(getApplicationContext(), android.os.Process.myPid()))) {
- return;
- }
- //如果是新应用,默认设置播放器为ijkplayer
- if (SPutil.getPrefInt(this, SPutil.videoType, 0) == 0) {
- SPutil.setPrefInt(this, SPutil.videoType, SPutil.VIDEO_IJKPLAYER);
- }
- }
- public static void exitApp() {
- Intent intent_close = new Intent(ContextUtil.CLOSE_ACTIVITY_SPLASH);
- ContextUtil.getContext().sendBroadcast(intent_close);
- }
- private static List<Activity> getAllActivitys() {
- List<Activity> list = new ArrayList<>();
- try {
- Class<?> activityThread = Class.forName("android.app.ActivityThread");
- Method currentActivityThread = activityThread.getDeclaredMethod("currentActivityThread");
- currentActivityThread.setAccessible(true);
- //获取主线程对象
- Object activityThreadObject = currentActivityThread.invoke(null);
- Field mActivitiesField = activityThread.getDeclaredField("mActivities");
- mActivitiesField.setAccessible(true);
- Map<Object, Object> mActivities = (Map<Object, Object>) mActivitiesField.get(activityThreadObject);
- for (Map.Entry<Object, Object> entry : mActivities.entrySet()) {
- Object value = entry.getValue();
- Class<?> activityClientRecordClass = value.getClass();
- Field activityField = activityClientRecordClass.getDeclaredField("activity");
- activityField.setAccessible(true);
- Object o = activityField.get(value);
- list.add((Activity) o);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return list;
- }
- public static void clearActivity() {
- List<Activity> myAclist = getAllActivitys();
- for (int i = 0; i < myAclist.size(); i++) {
- myAclist.get(i).finish();
- }
- }
- @Nullable
- public String getProcessName(Context cxt, int pid) {
- ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
- if (am == null) {
- return null;
- }
- List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
- if (runningApps != null && !runningApps.isEmpty()) {
- for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
- if (procInfo.pid == pid) {
- return procInfo.processName;
- }
- }
- }
- return null;
- }
- public static String getAppCode() {
- //记得改友盟code
- return mUMengAppID;
- }
- public String getChannelName() {
- String channelName = null;
- try {
- PackageManager packageManager = getPackageManager();
- if (packageManager != null) {
- //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
- ApplicationInfo applicationInfo = packageManager.
- getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
- if (applicationInfo != null) {
- if (applicationInfo.metaData != null) {
- channelName = String.valueOf(applicationInfo.metaData.get("UMENG_CHANNEL"));
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return channelName;
- }
- ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
- @Override
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
- }
- @Override
- public void onActivityStarted(Activity activity) {
- if (activityAount == 0) {
- //app回到前台
- isForeground = true;
- // ToastUtil.showToast("app回到前台了");
- Logger.e("app回到前台了");
- APP_START_TIME = System.currentTimeMillis();
- }
- activityAount++;
- }
- @Override
- public void onActivityResumed(Activity activity) {
- }
- @Override
- public void onActivityPaused(Activity activity) {
- }
- @Override
- public void onActivityStopped(Activity activity) {
- activityAount--;
- if (activityAount == 0) {
- isForeground = false;
- // ToastUtil.showToast("app后台了");
- Logger.e("app后台了");
- OKHttpUtil.getInstance().postUserTime(new OKHttpUtil.ResultCallback() {
- @Override
- public void onError(Request request, Exception e) {
- // exitApp();
- // android.os.Process.killProcess(android.os.Process.myPid());
- APP_START_TIME = 0;
- }
- @Override
- public void onResponse(Object response) {
- Logger.e("response:" + response);
- // exitApp();
- // android.os.Process.killProcess(android.os.Process.myPid());
- APP_START_TIME = 0;
- }
- });
- }
- }
- @Override
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
- }
- @Override
- public void onActivityDestroyed(Activity activity) {
- }
- };
- }
|