EApplication.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.edufound.android.xyyf.application;
  2. import android.app.Activity;
  3. import android.app.ActivityManager;
  4. import android.app.Application;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.pm.ApplicationInfo;
  8. import android.content.pm.PackageManager;
  9. import android.support.annotation.Nullable;
  10. import com.edufound.android.xyyf.R;
  11. import com.edufound.android.xyyf.pay.PayInit;
  12. import com.edufound.android.xyyf.util.ContextUtil;
  13. import com.edufound.android.xyyf.util.SPutil;
  14. import com.umeng.commonsdk.UMConfigure;
  15. import org.android.agoo.huawei.HuaWeiRegister;
  16. import org.android.agoo.vivo.VivoRegister;
  17. import org.android.agoo.xiaomi.MiPushRegistar;
  18. import java.lang.reflect.Field;
  19. import java.lang.reflect.Method;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import java.util.Map;
  23. public class EApplication extends Application {
  24. final String XIAOMI_ID = "";
  25. final String XIAOMI_KEY = "";
  26. static String mUMengAppID;
  27. @Override
  28. public void onCreate() {
  29. super.onCreate();
  30. ContextUtil.setContext(this);
  31. ContextUtil.setApplication(this);
  32. //上线关掉debug模式
  33. ContextUtil.setIsDebug(true);
  34. mUMengAppID = getChannelName();
  35. //根据appcode初始化支付sdk
  36. // UMConfigure.setLogEnabled(true);
  37. // UMConfigure.init(this, "5ffbb9e0f1eb4f3f9b58b05e", getAppCode() + "", UMConfigure.DEVICE_TYPE_PHONE, "dfc59afd6dc6b1550ff1c2e0c7eb10fd");
  38. // PushAgent mPushAgent = PushAgent.getInstance(this);
  39. // mPushAgent.register(new IUmengRegisterCallback() {
  40. // @Override
  41. // public void onSuccess(String deviceToken) {
  42. // Logger.e("DeviceToken:" + deviceToken);
  43. // }
  44. //
  45. // @Override
  46. // public void onFailure(String s, String s1) {
  47. // Logger.e("注册失败:--------> " + "s:" + s + ",s1:" + s1);
  48. // }
  49. // });
  50. if (getAppCode().equals(getString(R.string.app_code_xm))) {
  51. MiPushRegistar.register(this, XIAOMI_ID, XIAOMI_KEY);
  52. } else if (getAppCode().equals(getString(R.string.app_code_huawei))) {
  53. HuaWeiRegister.register(this);
  54. } else if (getAppCode().equals(getString(R.string.app_code_vivo))) {
  55. VivoRegister.register(this);
  56. }
  57. PayInit.getInstance().initPaySDK(Integer.valueOf(getAppCode()), EApplication.this);
  58. if (!getPackageName().equals(
  59. getProcessName(getApplicationContext(), android.os.Process.myPid()))) {
  60. return;
  61. }
  62. //如果是新应用,默认设置播放器为ijkplayer
  63. if (SPutil.getPrefInt(this, SPutil.videoType, 0) == 0) {
  64. SPutil.setPrefInt(this, SPutil.videoType, SPutil.VIDEO_IJKPLAYER);
  65. }
  66. /*
  67. * AppKey
  68. 5e34d2fb4ca3574b1800005b
  69. Umeng Message Secret
  70. dfc59afd6dc6b1550ff1c2e0c7eb10fd
  71. App Master Secret
  72. ojy29ycnnynpvyetpunc2m0ija4vskyo
  73. *
  74. * */
  75. }
  76. public static void exitApp() {
  77. Intent intent_close = new Intent(ContextUtil.CLOSE_ACTIVITY_SPLASH);
  78. ContextUtil.getContext().sendBroadcast(intent_close);
  79. }
  80. private static List<Activity> getAllActivitys() {
  81. List<Activity> list = new ArrayList<>();
  82. try {
  83. Class<?> activityThread = Class.forName("android.app.ActivityThread");
  84. Method currentActivityThread = activityThread.getDeclaredMethod("currentActivityThread");
  85. currentActivityThread.setAccessible(true);
  86. //获取主线程对象
  87. Object activityThreadObject = currentActivityThread.invoke(null);
  88. Field mActivitiesField = activityThread.getDeclaredField("mActivities");
  89. mActivitiesField.setAccessible(true);
  90. Map<Object, Object> mActivities = (Map<Object, Object>) mActivitiesField.get(activityThreadObject);
  91. for (Map.Entry<Object, Object> entry : mActivities.entrySet()) {
  92. Object value = entry.getValue();
  93. Class<?> activityClientRecordClass = value.getClass();
  94. Field activityField = activityClientRecordClass.getDeclaredField("activity");
  95. activityField.setAccessible(true);
  96. Object o = activityField.get(value);
  97. list.add((Activity) o);
  98. }
  99. } catch (Exception e) {
  100. e.printStackTrace();
  101. }
  102. return list;
  103. }
  104. public static void clearActivity() {
  105. List<Activity> myAclist = getAllActivitys();
  106. for (int i = 0; i < myAclist.size(); i++) {
  107. myAclist.get(i).finish();
  108. }
  109. }
  110. @Nullable
  111. public String getProcessName(Context cxt, int pid) {
  112. ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACTIVITY_SERVICE);
  113. if (am == null) {
  114. return null;
  115. }
  116. List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
  117. if (runningApps != null && !runningApps.isEmpty()) {
  118. for (ActivityManager.RunningAppProcessInfo procInfo : runningApps) {
  119. if (procInfo.pid == pid) {
  120. return procInfo.processName;
  121. }
  122. }
  123. }
  124. return null;
  125. }
  126. public static String getAppCode() {
  127. //记得改友盟code
  128. return mUMengAppID;
  129. }
  130. public String getChannelName() {
  131. String channelName = null;
  132. try {
  133. PackageManager packageManager = getPackageManager();
  134. if (packageManager != null) {
  135. //注意此处为ApplicationInfo 而不是 ActivityInfo,因为友盟设置的meta-data是在application标签中,而不是某activity标签中,所以用ApplicationInfo
  136. ApplicationInfo applicationInfo = packageManager.
  137. getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
  138. if (applicationInfo != null) {
  139. if (applicationInfo.metaData != null) {
  140. channelName = String.valueOf(applicationInfo.metaData.get("UMENG_CHANNEL"));
  141. }
  142. }
  143. }
  144. } catch (Exception e) {
  145. e.printStackTrace();
  146. }
  147. return channelName;
  148. }
  149. }