GoldenLineApplication.java
6.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
package com.cnlive.goldenline.application;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.multidex.MultiDex;
import android.util.Log;
import com.cnlive.goldenline.BuildConfig;
import com.cnlive.goldenline.ui.activity.SplashActivity;
import com.cnlive.goldenline.util.ChannelUtil;
import com.cnlive.goldenline.util.DeviceUtils;
import com.cnlive.goldenline.util.LogUtils;
import com.cnlive.goldenline.util.NetWorkStateReceiver;
import com.cnlive.goldenline.util.PushHelper;
import com.cnlive.goldenline.util.SPUtils;
import com.cnlive.libs.util.Config;
import com.crashlytics.android.Crashlytics;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.backends.okhttp.OkHttpImagePipelineConfigFactory;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.squareup.okhttp.OkHttpClient;
import com.umeng.analytics.AnalyticsConfig;
import com.umeng.message.IUmengRegisterCallback;
import com.umeng.message.PushAgent;
import com.umeng.message.UmengNotificationClickHandler;
import com.umeng.message.entity.UMessage;
import java.util.List;
import cn.cmvideo.sdk.common.CmVideoApplication;
import io.fabric.sdk.android.Fabric;
/**
*
* Created by zuoxian on 15/9/7.
*/
public class GoldenLineApplication extends CmVideoApplication {
public static GoldenLineApplication sInstance;
public NetWorkStateReceiver netWorkStateReceiver;
public static String ime = "";
public static SharedPreferences.Editor mEdit;
/*正式*/
@NonNull
public static String appSecret = "c3af3f51d150a487520367b9974de5d3bc289ce9c698f7";
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
System.loadLibrary("mg20pbase");
String channel = ChannelUtil.getChannelFromApk(this);
AnalyticsConfig.setChannel(channel);
if (null == mEdit) {
SharedPreferences share = getSharedPreferences("myUid", MODE_PRIVATE);
mEdit = share.edit(); //编辑文件
}
// initialize the singleton1
sInstance = this;
// initialize fresco
ImagePipelineConfig config = OkHttpImagePipelineConfigFactory.newBuilder(this,
new OkHttpClient())
.setDownsampleEnabled(true)
.build();
Fresco.initialize(this, config);
ime = DeviceUtils.getIEMI(this);
// MiguUtils.getMobilePhoneNumber(this);
//测试 com.cnlive.goldenline.dev
// Config.init(this, "117_j0sxdaij25", "d4d2e60cd62e452cabbc2af40381be0759b02f09f478c1");
//正式 com.cnlive.goldenline
Config.init(this, "117_itdq3xbv08", "d59862943c394abeb6cac94106f92332546827297104c3");
if (!BuildConfig.LOG_DEBUG)
CrashHandler.getInstance().init(getApplicationContext());
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.threadPoolSize(5)//多线程下载中的最大线程数
.diskCacheFileNameGenerator(new Md5FileNameGenerator()) //设置本地文件名缓存规则
.diskCacheSize(10 * 1024 * 1024)//本地缓存的可以放置最大数,这里设置的是50M
.diskCacheFileCount(110) //最大放置多少张图片
.build();
//将单利模式加载进去,这样全局就只有一个这样的对象
ImageLoader.getInstance().init(configuration);
initUMeng();
}
/**
* register UMeng service
*/
private void initUMeng() {
PushAgent mPushAgent = PushAgent.getInstance(this);
//注册推送服务,每次调用register方法都会回调该接口
mPushAgent.register(new IUmengRegisterCallback() {
@Override
public void onSuccess(String deviceToken) {
//注册成功会返回device token
Log.d("umToken", "device token: " + deviceToken);
SPUtils.put(getApplicationContext(),"device_token",deviceToken);
}
@Override
public void onFailure(String s, String s1) {
LogUtils.LOGE("um init failure");
}
});
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
@Override
public void dealWithCustomAction(Context context, UMessage msg) {
String type = msg.extra.get("pushTypeCode");
String jsonStr = msg.extra.get("pushModel");
if(type ==null){
return;
}
Log.e("testPush", "dealWithCustomAction: "+jsonStr);
if (isAppInBackground(context)) {
//app's mainActivity has been destroyed but the process alive in system.
if ((boolean) SPUtils.get(context, "isExit", false)) {
SplashActivity.start(context,type,jsonStr);
} else {
//app go background when user home press.
Intent intent = PushHelper.getIntent(context, type,jsonStr);
if(intent !=null){
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
} else { //app is showing to user.
Log.e("test", "dealWithCustomAction: ");
Intent intent = PushHelper.getIntent(context, type,jsonStr);
if(intent !=null){
Log.e("test", "dealWithCustomAction: 1");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
}
};
mPushAgent.setNotificationClickHandler(notificationClickHandler);
}
public static synchronized GoldenLineApplication getInstance() {
return sInstance;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}
/**
* judge app is running on background
* @param context context
* @return true: background ,false: font
*/
private boolean isAppInBackground(Context context) {
ActivityManager activityManager =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos = activityManager.getRunningAppProcesses();
return !processInfos.get(0).processName.equals(context.getPackageName());
}
}