MainActivity.java 61 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443
  1. package com.xzjmyk.pm.activity.ui;
  2. import android.Manifest;
  3. import android.app.Activity;
  4. import android.app.ActivityManager;
  5. import android.content.BroadcastReceiver;
  6. import android.content.ComponentName;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.content.ServiceConnection;
  11. import android.graphics.drawable.BitmapDrawable;
  12. import android.net.Uri;
  13. import android.os.Build;
  14. import android.os.Bundle;
  15. import android.os.Handler;
  16. import android.os.IBinder;
  17. import android.os.Message;
  18. import android.os.PersistableBundle;
  19. import android.support.v4.app.Fragment;
  20. import android.support.v4.app.FragmentManager;
  21. import android.support.v4.app.FragmentTransaction;
  22. import android.support.v7.widget.LinearLayoutManager;
  23. import android.support.v7.widget.RecyclerView;
  24. import android.text.TextUtils;
  25. import android.util.DisplayMetrics;
  26. import android.util.Log;
  27. import android.view.Gravity;
  28. import android.view.KeyEvent;
  29. import android.view.LayoutInflater;
  30. import android.view.View;
  31. import android.view.WindowManager;
  32. import android.view.animation.Animation;
  33. import android.view.animation.LinearInterpolator;
  34. import android.view.animation.ScaleAnimation;
  35. import android.widget.LinearLayout;
  36. import android.widget.PopupWindow;
  37. import android.widget.RadioButton;
  38. import android.widget.TextView;
  39. import android.widget.Toast;
  40. import com.alibaba.fastjson.JSON;
  41. import com.alibaba.fastjson.JSONArray;
  42. import com.alibaba.fastjson.JSONObject;
  43. import com.android.volley.Response;
  44. import com.android.volley.VolleyError;
  45. import com.baidu.android.pushservice.PushConstants;
  46. import com.baidu.android.pushservice.PushManager;
  47. import com.baidu.autoupdatesdk.AppUpdateInfo;
  48. import com.baidu.autoupdatesdk.AppUpdateInfoForInstall;
  49. import com.baidu.autoupdatesdk.BDAutoUpdateSDK;
  50. import com.baidu.autoupdatesdk.CPCheckUpdateCallback;
  51. import com.common.LogUtil;
  52. import com.common.data.DateFormatUtil;
  53. import com.common.data.JSONUtil;
  54. import com.common.data.ListUtils;
  55. import com.common.data.StringUtil;
  56. import com.common.preferences.PreferenceUtils;
  57. import com.common.system.DisplayUtil;
  58. import com.core.api.wxapi.ApiConfig;
  59. import com.core.api.wxapi.ApiPlatform;
  60. import com.core.api.wxapi.ApiUtils;
  61. import com.core.app.AppConfig;
  62. import com.core.app.MyApplication;
  63. import com.core.base.BaseActivity;
  64. import com.core.broadcast.MsgBroadcast;
  65. import com.core.dao.SignAutoLogDao;
  66. import com.core.dao.UserDao;
  67. import com.core.dao.work.WorkModelDao;
  68. import com.core.model.CircleMessage;
  69. import com.core.model.NewFriendMessage;
  70. import com.core.model.OAConfig;
  71. import com.core.model.User;
  72. import com.core.model.WorkModel;
  73. import com.core.net.NetWorkObservable;
  74. import com.core.net.http.ViewUtil;
  75. import com.core.net.http.http.OAHttpHelper;
  76. import com.core.net.volley.ArrayResult;
  77. import com.core.net.volley.FastVolley;
  78. import com.core.net.volley.Result;
  79. import com.core.net.volley.StringJsonArrayRequest;
  80. import com.core.utils.CommonInterface;
  81. import com.core.utils.IntentUtils;
  82. import com.core.utils.helper.LoginHelper;
  83. import com.core.xmpp.CoreService;
  84. import com.core.xmpp.ListenerManager;
  85. import com.core.xmpp.dao.FriendDao;
  86. import com.core.xmpp.listener.AuthStateListener;
  87. import com.core.xmpp.model.SignAutoLogEntity;
  88. import com.me.network.app.base.HttpCallback;
  89. import com.me.network.app.base.HttpParams;
  90. import com.me.network.app.http.HttpRequest;
  91. import com.me.network.app.http.Method;
  92. import com.modular.appmessages.presenter.MessagePresenter;
  93. import com.modular.apptasks.presenter.AutoPresenter;
  94. import com.modular.apptasks.presenter.SchedulePresenter;
  95. import com.modular.apptasks.util.AlarmUtil;
  96. import com.modular.login.activity.LoginActivity;
  97. import com.uas.appcontact.listener.ImStatusListener;
  98. import com.uas.appcontact.ui.fragment.ContactsFragment;
  99. import com.uas.appcontact.ui.fragment.GroupChatFragment;
  100. import com.uas.appme.other.model.Master;
  101. import com.uas.appme.pedometer.utils.StepCountCheckUtil;
  102. import com.uas.appme.pedometer.utils.StepUtils;
  103. import com.uas.appme.settings.activity.FeedbackActivity;
  104. import com.uas.appme.settings.activity.SettingActivity;
  105. import com.uas.appworks.model.Schedule;
  106. import com.uas.appworks.model.bean.TimeHelperBean;
  107. import com.uas.appworks.utils.ScheduleUtils;
  108. import com.xzjmyk.pm.activity.R;
  109. import com.xzjmyk.pm.activity.adapter.MainScheduleAdapter;
  110. import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
  111. import com.xzjmyk.pm.activity.ui.erp.fragment.WorkPlatFragment;
  112. import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
  113. import com.xzjmyk.pm.activity.ui.me.MeFragment;
  114. import com.xzjmyk.pm.activity.ui.me.ScreenListener;
  115. import com.xzjmyk.pm.activity.ui.message.MessageFragment;
  116. import com.xzjmyk.pm.activity.ui.tool.WebViewActivity;
  117. import com.xzjmyk.pm.activity.util.dialog.QSearchPpwindowUtils;
  118. import com.xzjmyk.pm.activity.util.im.Constants;
  119. import com.xzjmyk.pm.activity.util.oa.BadgeUtil;
  120. import com.xzjmyk.pm.activity.util.oa.CommonUtil;
  121. import com.xzjmyk.pm.activity.view.DivideRadioGroup;
  122. import java.util.ArrayList;
  123. import java.util.Calendar;
  124. import java.util.Collections;
  125. import java.util.Date;
  126. import java.util.HashMap;
  127. import java.util.LinkedHashMap;
  128. import java.util.List;
  129. import java.util.Map;
  130. import java.util.TimeZone;
  131. import java.util.Timer;
  132. import java.util.TimerTask;
  133. import static android.view.View.GONE;
  134. public class MainActivity extends BaseActivity implements ImStatusListener, NetWorkObservable.NetWorkObserver, MessagePresenter.UnReaderListener, AuthStateListener {
  135. private static final int LOG_SEND_REQUEST = 17519;
  136. public static String HASHCODE = "MainActivity";
  137. public static boolean isUnReadWork; //判断我的空间是否有新内容
  138. private static final String TAG_MESSAGE = "message";
  139. private static final String TAG_MY = "myfriend";
  140. private static final String TAG_NEARBY = "nearby";
  141. private static final String TAG_GROUP_CHAT = "group_chat";
  142. private static final String TAG_ME = "me";
  143. private static final String TAG_BusinessCircle = "my_BusinessCircle";
  144. /* UserCheck */
  145. private static final int MSG_USER_CHECK = 0x1;
  146. // 因为RadioGroup的check方法,会调用onCheckChange两次,用mLastFragment保存最后一次添加的fragment,防止重复add
  147. // fragment 出错
  148. private static final int RETRY_CHECK_DELAY_MAX = 30000;// 为成功的情况下,最长30s检测一次
  149. public static String SIP_DOMAIN = "120.24.211.24";
  150. public static String SIP_SERVER_HOST = "120.24.211.24";
  151. public String SIP_USERNAME = "10000072";
  152. private boolean mBind;
  153. private CoreService mXmppService;
  154. private FastVolley mFastVolley;
  155. //private BusinessCircleFragment mBusinessCircleFragment;
  156. private ActivityManager mActivityManager;
  157. // 界面组件
  158. private DivideRadioGroup mTabRadioGroup;
  159. /**
  160. * @注释:主界面Fragment
  161. */
  162. private Fragment mLastFragment;
  163. private MessageFragment mMessageFragment;
  164. private MyFriendFragment mMyFriendFragment;//我的朋友---相互关注,单项关注,房间
  165. private WorkPlatFragment mWorksFragment;//工作
  166. // private WorksFragment mWorksFragment;//工作
  167. private GroupChatFragment mGroupChatFragment;//群聊
  168. private MeFragment mMeFragment;//我
  169. private ContactsFragment mBusinessCircleFragment;
  170. public static String BAIDU_PUSH = "BAIDUPUSH";
  171. public static String UU_STEP = "UUSTEP";
  172. public static String Q_SEARCH = "Q_SEARCH";
  173. private boolean mXmppBind;
  174. private CoreService mCoreService;
  175. private boolean isPause = true;// 界面是否暂停
  176. private ScreenListener screenListener;//锁屏开屏监听
  177. private int mRetryCheckDelay = 0;
  178. public static int UPDATA_LIST = 101;
  179. public static String NEW_FUNCTION_NOTICE = "NEW_FUNCTION_NOTICE2017_09_26";
  180. public static String NEW_VERSION_RATING = "NEW_VERSION_RATING"; // 判断是否为新版本弹出评分标志
  181. private TextView main_tab_three_tv;
  182. private SignAutoLogDao signAutoLogDao = new SignAutoLogDao();
  183. private Handler mUserCheckHander = new Handler() {
  184. public void handleMessage(Message msg) {
  185. if (msg.what == MSG_USER_CHECK) {
  186. if (mRetryCheckDelay < RETRY_CHECK_DELAY_MAX) {
  187. mRetryCheckDelay += 5000;
  188. }
  189. mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
  190. doUserCheck();
  191. }
  192. if (msg.what == LOG_SEND_REQUEST) {
  193. String Log_Send_request = msg.getData().getString("result");
  194. Log.i("Log_Send_request", Log_Send_request + "");
  195. signAutoLogDao.cleanLocalData(); // 整理本地数据
  196. try {
  197. if (!StringUtil.isEmpty(Log_Send_request) &&
  198. JSON.parseObject(Log_Send_request).containsKey("result") &&
  199. JSON.parseObject(Log_Send_request).getBoolean("result")) {
  200. signAutoLogDao.updateCurData(isendEntity); // 将上传的日志状态标为1 ,是本地数据保留本次上传的和产生的
  201. Toast.makeText(ct, "日志上传成功", Toast.LENGTH_LONG);
  202. }
  203. } catch (Exception e) {
  204. e.printStackTrace();
  205. }
  206. }
  207. }
  208. };
  209. private int mImStatus = AuthStateListener.AUTH_STATE_NOT;
  210. private List<SignAutoLogEntity> signAutoLogEntity;
  211. private List<SignAutoLogEntity> isendEntity;
  212. private Boolean platform;
  213. private RadioButton main_tab_one, main_tab_two, main_tab_five, main_tab_three;
  214. private PopupWindow mUpdatePopupWindow;
  215. private PopupWindow mSchedulePop;
  216. public int getmImStatus() {
  217. return mImStatus;
  218. }
  219. private ServiceConnection mXmppServiceConnection = new ServiceConnection() {
  220. @Override
  221. public void onServiceDisconnected(ComponentName name) {
  222. mCoreService = null;
  223. }
  224. @Override
  225. public void onServiceConnected(ComponentName name, IBinder service) {
  226. mCoreService = ((CoreService.CoreServiceBinder) service).getService();
  227. mImStatus = mCoreService.isAuthenticated() ? AuthStateListener.AUTH_STATE_SUCCESS : AuthStateListener.AUTH_STATE_NOT;
  228. }
  229. };
  230. @Override
  231. public boolean needCommonToolBar() {
  232. return false;
  233. }
  234. /**
  235. * 启动返回
  236. * by gongpm
  237. */
  238. @Override
  239. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  240. super.onActivityResult(requestCode, resultCode, data);
  241. if (UPDATA_LIST == requestCode) {
  242. //TODO 更新
  243. // if (mBusinessCircleFragment != null) {
  244. // mBusinessCircleFragment.onResult();
  245. // }
  246. } else if (requestCode == 0x11) {
  247. if (resultCode == 0x12) {
  248. mTabRadioGroup.check(R.id.main_tab_five);
  249. }
  250. }
  251. }
  252. int oldERPNum = 0;
  253. private void initPermission() {
  254. initPermission(0);
  255. }
  256. private void initPermission(int item) {
  257. Runnable runnable = new Runnable() {
  258. @Override
  259. public void run() {
  260. initPermission(item + 1);
  261. }
  262. };
  263. String permission = null;
  264. switch (item) {
  265. case 0:
  266. permission = Manifest.permission.ACCESS_FINE_LOCATION;
  267. break;
  268. case 1:
  269. permission = Manifest.permission.RECORD_AUDIO;
  270. break;
  271. case 2:
  272. permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
  273. break;
  274. }
  275. if (item <= 2) {
  276. requestPermission(permission, runnable, runnable);
  277. }
  278. }
  279. private Animation getImgAnimation(View view) {
  280. Object tag = view.getTag(R.id.tag_key);
  281. if (tag != null && tag instanceof ScaleAnimation) {
  282. ScaleAnimation animation = (ScaleAnimation) tag;
  283. return animation;
  284. }
  285. ScaleAnimation animation = new ScaleAnimation(
  286. 0.5f, 1.0f, 0.5f, 1.0f,
  287. Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
  288. LinearInterpolator lin = new LinearInterpolator();
  289. animation.setInterpolator(lin);
  290. animation.setDuration(300);//设置动画持续时间
  291. // animation.setRepeatCount(-1);//设置重复次数
  292. animation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
  293. animation.setStartOffset(0);//执行前的等待时间
  294. view.setTag(R.id.tag_key, animation);
  295. return animation;
  296. }
  297. private Timer delayTimer;
  298. private Runnable uiRunnable = new Runnable() {
  299. @Override
  300. public void run() {
  301. if (main_tab_three != null) {
  302. main_tab_three.startAnimation(getImgAnimation(main_tab_three));
  303. }
  304. }
  305. };
  306. //进来时候登陆
  307. public void Login() {
  308. Master master = new Master();
  309. master.setMa_function(CommonUtil.getMaster());
  310. String url = com.core.utils.CommonUtil.getAppBaseUrl(ct) + "mobile/login.action";
  311. Map<String, Object> params = new HashMap<String, Object>();
  312. String accountToken = CommonUtil.getSharedPreferences(ct, com.core.app.Constants.CACHE.ACCOUNT_CENTER_TOKEN);
  313. params.put("token", accountToken);
  314. params.put("master", CommonUtil.getMaster());
  315. Message message = new Message();
  316. LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
  317. headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
  318. ViewUtil.httpSendRequest(ct, url, params, mUserCheckHander, headers, 0x12312, message, null, "get");
  319. }
  320. private void delay() {
  321. if (delayTimer == null) {
  322. delayTimer = new Timer();
  323. }
  324. delayTimer.schedule(new TimerTask() {
  325. @Override
  326. public void run() {
  327. OAHttpHelper.getInstance().post(uiRunnable);
  328. }
  329. }, 100);
  330. }
  331. private void startAnimator(View view) {
  332. // if (view != null && main_tab_three == view) {
  333. // delay();
  334. // } else {
  335. // view.startAnimation(getImgAnimation(view));
  336. //
  337. // }
  338. view.startAnimation(getImgAnimation(view));
  339. }
  340. /**
  341. * @desc:主页菜单入口
  342. * @author:Administrator on 2016/1/26 10:03
  343. */
  344. private DivideRadioGroup.OnCheckedChangeListener mTabRadioGroupChangeListener = new DivideRadioGroup.OnCheckedChangeListener() {
  345. @Override
  346. public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
  347. if (checkedId == R.id.main_tab_one) {
  348. if (mMessageFragment == null) {
  349. mMessageFragment = new MessageFragment();
  350. }
  351. changeFragment(mMessageFragment, TAG_MESSAGE);//消息
  352. updateMessageTitle();
  353. startAnimator(main_tab_one);
  354. } else if (checkedId == R.id.main_tab_two) {
  355. if (mBusinessCircleFragment == null) {
  356. mBusinessCircleFragment = new ContactsFragment();
  357. }
  358. changeFragment(mBusinessCircleFragment, TAG_BusinessCircle);//发现
  359. setTitle(getString(R.string.contact_title));
  360. startAnimator(main_tab_two);
  361. } else if (checkedId == R.id.main_tab_three) { //点击工作选项
  362. if (mWorksFragment == null) {
  363. mWorksFragment = new WorkPlatFragment();
  364. }
  365. changeFragment(mWorksFragment, TAG_NEARBY);
  366. String role = com.core.utils.CommonUtil.getUserRole();
  367. if (role.equals("2")) {
  368. String master_ch = CommonUtil.getSharedPreferences(ct, "Master_ch");
  369. setTitle(TextUtils.isEmpty(master_ch) ? getString(R.string.work_title) : master_ch);
  370. } else {
  371. setTitle(getString(R.string.work_title));
  372. }
  373. main_tab_three_tv.setVisibility(View.INVISIBLE);
  374. PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
  375. startAnimator(main_tab_three);
  376. } else if (checkedId == R.id.main_tab_five) {
  377. if (mMeFragment == null) {
  378. mMeFragment = new MeFragment();
  379. }
  380. CommonUtil.setSharedPreferences(ct, com.core.app.Constants.NEW_ME_TAG, true);
  381. changeFragment(mMeFragment, TAG_ME);//我
  382. setTitle(R.string.me);
  383. startAnimator(main_tab_five);
  384. }
  385. }
  386. };
  387. private AppConfig config;
  388. private String mLoginUserId;
  389. private void requestMyBusiness() {
  390. if (config == null) {
  391. config = MyApplication.getInstance().getConfig();
  392. }
  393. if (mLoginUserId == null || mLoginUserId.length() <= 0) {
  394. mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
  395. }
  396. HashMap<String, String> params = new HashMap<String, String>();
  397. params.put("access_token", MyApplication.getInstance().mAccessToken);
  398. params.put("pageSize", "1");
  399. StringJsonArrayRequest<CircleMessage> request = new StringJsonArrayRequest<CircleMessage>(
  400. config.MSG_LIST, new Response.ErrorListener() {
  401. @Override
  402. public void onErrorResponse(VolleyError arg0) {
  403. }
  404. }, new StringJsonArrayRequest.Listener<CircleMessage>() {
  405. @Override
  406. public void onResponse(ArrayResult<CircleMessage> result) {
  407. boolean success = Result.defaultParser(ct, result, false);
  408. if (success) {
  409. //获取到数据
  410. try {
  411. List<CircleMessage> datas = result.getData();
  412. if (ListUtils.isEmpty(datas)) return;
  413. long time = datas.get(0).getTime();
  414. String userId = datas.get(0).getUserId();
  415. Long oldTime = PreferenceUtils.getLong("TIMEMAIN", -1);
  416. if (!userId.equals(MyApplication.getInstance().mLoginUser.getUserId()) && oldTime < time) {
  417. setShowUnRead(true);
  418. } else {
  419. setShowUnRead(false);
  420. }
  421. } catch (Exception e) {
  422. }
  423. } else {
  424. setShowUnRead(false);
  425. }
  426. }
  427. }, CircleMessage.class, params);
  428. if (mFastVolley == null) {
  429. mFastVolley = MyApplication.getInstance().getFastVolley();
  430. }
  431. mFastVolley.addDefaultRequest(HASHCODE, request);
  432. }
  433. private void setShowUnRead(boolean isUnRead) {
  434. isUnReadWork = isUnRead;
  435. if (isUnRead) {
  436. unWorkReadTV.setVisibility(View.VISIBLE);
  437. } else if (CommonUtil.getSharedPreferencesBoolean(ct, com.core.app.Constants.NEW_ME_TAG, false)) {
  438. unWorkReadTV.setVisibility(GONE);
  439. }
  440. if (mMeFragment == null) return;
  441. mMeFragment.setChangerRemain(!isUnRead);
  442. }
  443. /***********************
  444. * 未读数量的更新功能
  445. *****************/
  446. private Handler mUnReadHandler = new Handler();
  447. private TextView mMsgUnReadTv;
  448. private TextView unWorkReadTV;
  449. private int mMsgUnReadNum = 0;
  450. private BroadcastReceiver mUserLogInOutReceiver = new BroadcastReceiver() {
  451. @Override
  452. public void onReceive(Context context, Intent intent) {
  453. String action = intent.getAction();
  454. if (action.equals(LoginHelper.ACTION_LOGIN)) {
  455. User user = MyApplication.getInstance().mLoginUser;
  456. Intent startIntent = CoreService.getIntent(MainActivity.this, user.getUserId(), user.getPassword(), user.getNickName());
  457. startService(startIntent);
  458. // ToastUtil.showNormalToast(MainActivity.this, "开始Xmpp登陆");
  459. checkUserDb(user.getUserId());
  460. mTabRadioGroup.clearCheck();
  461. mTabRadioGroup.check(R.id.main_tab_one);
  462. } else if (action.equals(LoginHelper.ACTION_LOGOUT)) {
  463. try {
  464. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_SIMPLE_TELPHONE;
  465. if (mCoreService != null) {
  466. mCoreService.logout();
  467. }
  468. cancelUserCheckIfExist();
  469. AlarmUtil.cancelAlarm(AlarmUtil.ID_SCHEDULE, AlarmUtil.ACTION_SCHEDULE);
  470. startActivity(new Intent(MainActivity.this, LoginActivity.class));
  471. // mFindRb.setChecked(true);
  472. MainActivity.this.finish();
  473. removeNeedUserFragment(false);
  474. } catch (Exception e) {
  475. }
  476. } else if (action.equals(LoginHelper.ACTION_CONFLICT)) {
  477. // 改变用户状态
  478. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_TOKEN_CHANGE;
  479. mCoreService.logout();
  480. removeNeedUserFragment(true);
  481. cancelUserCheckIfExist();
  482. // 弹出对话框---用户冲突LoginHelper.STATUS_USER_TOKEN_CHANGE
  483. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  484. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
  485. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
  486. } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
  487. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
  488. }
  489. } else if (action.equals(LoginHelper.ACTION_TOKEN)) { //TOKEN异常
  490. // 改变用户状态
  491. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_TOKEN_CHANGE;
  492. mCoreService.logout();
  493. removeNeedUserFragment(true);
  494. cancelUserCheckIfExist();
  495. // 弹出对话框---LoginHelper.STATUS_USER_TOKEN_CHANGE=4
  496. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  497. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
  498. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
  499. } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
  500. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
  501. }
  502. } else if (action.equals(LoginHelper.ACTION_NEED_UPDATE)) {
  503. // mFindRb.setChecked(true);
  504. removeNeedUserFragment(true);
  505. cancelUserCheckIfExist();
  506. // 弹出对话框
  507. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  508. } else if (action.equals(LoginHelper.ACTION_LOGIN_GIVE_UP)) {
  509. cancelUserCheckIfExist();
  510. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_NO_UPDATE;
  511. mCoreService.logout();
  512. }
  513. }
  514. };
  515. private boolean mMsgNumNeedUpdate = false;
  516. private BroadcastReceiver mUpdateUnReadReceiver = new BroadcastReceiver() {
  517. @Override
  518. public void onReceive(Context context, Intent intent) {
  519. if (!AppConfig.COMPANY) return;
  520. String action = intent.getAction();
  521. if (action.equals(MsgBroadcast.ACTION_MSG_NUM_UPDATE)) {
  522. int operation = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_OPERATION, MsgBroadcast.NUM_ADD);
  523. int count = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_COUNT, 0);
  524. mMsgUnReadNum = (operation == MsgBroadcast.NUM_ADD) ? mMsgUnReadNum + count : mMsgUnReadNum - count;
  525. updateMsgUnReadTv();
  526. } else if (action.equals(MsgBroadcast.ACTION_MSG_NUM_RESET)) {
  527. if (isPause) {// 等待恢复的时候更新
  528. mMsgNumNeedUpdate = true;
  529. } else {// 立即更新
  530. initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
  531. }
  532. } else if (AlarmUtil.ACTION_SCHEDULE.equals(action)) {
  533. SchedulePresenter.getInstance().startSchedule();
  534. }
  535. }
  536. };
  537. private ServiceConnection mServiceConnection = new ServiceConnection() {
  538. @Override
  539. public void onServiceDisconnected(ComponentName name) {
  540. mXmppService = null;
  541. }
  542. @Override
  543. public void onServiceConnected(ComponentName name, IBinder service) {
  544. mXmppService = ((CoreService.CoreServiceBinder) service).getService();
  545. }
  546. };
  547. //TODO 尝试不再activity上处理toolbar
  548. // @Override
  549. // public boolean needNavigation() {
  550. // return false;
  551. // }
  552. @Override
  553. protected void onCreate(Bundle savedInstanceState) {
  554. super.onCreate(savedInstanceState);
  555. setContentView(R.layout.activity_main);
  556. SIP_USERNAME = MyApplication.getInstance().mLoginUser.getUserId();
  557. String host = mConfig.MeetingHost;
  558. SIP_DOMAIN = host == null ? "120.24.211.24" : host;
  559. SIP_SERVER_HOST = host == null ? "120.24.211.24" : host;
  560. PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY,
  561. CommonUtil.getMetaValue(this, "api_key"));
  562. int isPush = PreferenceUtils.getInt(MyApplication.getInstance(), com.core.app.Constants.BAIDU_PUSH, 1);
  563. if (isPush == 0) {
  564. PushManager.stopWork(this);
  565. }
  566. mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
  567. if (savedInstanceState != null) {
  568. restoreState(savedInstanceState);
  569. }
  570. initView(savedInstanceState);//---
  571. // 注册网络改变回调
  572. MyApplication.getInstance().registerNetWorkObserver(this);
  573. //更新版本已升级到最新版本
  574. updateVersion();
  575. // 绑定监听
  576. ListenerManager.getInstance().addAuthStateChangeListener(this);
  577. // 注册消息更新广播
  578. IntentFilter msgIntentFilter = new IntentFilter();
  579. msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_UPDATE);
  580. msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_RESET);
  581. msgIntentFilter.addAction(AlarmUtil.ACTION_SCHEDULE);
  582. registerReceiver(mUpdateUnReadReceiver, msgIntentFilter);
  583. // 注册用户登录状态广播
  584. registerReceiver(mUserLogInOutReceiver, LoginHelper.getLogInOutActionFilter());
  585. // 绑定服务
  586. mXmppBind = bindService(CoreService.getIntent(), mXmppServiceConnection, BIND_AUTO_CREATE);
  587. // 检查用户的状态,做不同的初始化工作
  588. User loginUser = MyApplication.getInstance().mLoginUser;
  589. if (!LoginHelper.isUserValidation(loginUser)) {
  590. LoginHelper.prepareUser(this);
  591. }
  592. if (!MyApplication.getInstance().mUserStatusChecked) {// 用户状态没有检测,那么开始检测
  593. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  594. } else {
  595. if (MyApplication.getInstance().mUserStatus == LoginHelper.STATUS_USER_VALIDATION) {
  596. LoginHelper.broadcastLogin(this);
  597. } else {// 重新检测
  598. MyApplication.getInstance().mUserStatusChecked = false;
  599. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  600. }
  601. }
  602. getScheduleList();
  603. mBind = bindService(CoreService.getIntent(), mServiceConnection, BIND_AUTO_CREATE);
  604. screenListener = new ScreenListener(this);
  605. screenListener.begin(new ScreenListener.ScreenStateListener() {
  606. @Override
  607. public void onScreenOn() {
  608. Log.d("wang", "MainActivity....开屏");
  609. }
  610. @Override
  611. public void onScreenOff() {
  612. Log.d("wang", "MainActivity....锁屏");
  613. }
  614. @Override
  615. public void onUserPresent() {
  616. Log.d("wang", "MainActivity....解锁");
  617. }
  618. });
  619. //查询数据库,取出中文名:
  620. // DBManager dbManager = new DBManager(ct);
  621. // List<EmployeesEntity> db = dbManager.select_getEmployee(
  622. // new String[]{CommonUtil.getSharedPreferences(ct, "erp_master"),
  623. // CommonUtil.getSharedPreferences(ct, "erp_username")}
  624. // , "whichsys=? and em_code=? ");
  625. // if (!ListUtils.isEmpty(db)){
  626. // if (!StringUtil.isEmpty(db.get(0).getEM_NAME())){
  627. // CommonUtil.setSharedPreferences(ct,"erp_emname",db.get(0).getEM_NAME());
  628. // }
  629. // }
  630. // dbManager.closeDB();
  631. doHiTask();
  632. autoPresenter = AutoPresenter.onCreate();
  633. SchedulePresenter.getInstance().startSchedule();
  634. CommonInterface.getInstance().loadConfigs(null);
  635. // startService(new Intent(MainActivity.this, AutoErpService.class));
  636. LogUtil.d("OnCreate end:" + DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
  637. //初始化面部识别
  638. com.baidu.aip.excep.utils.FaceConfig.initFace(ct);
  639. // Login();
  640. }
  641. private AutoPresenter autoPresenter;
  642. private Handler handler = new Handler();
  643. private Runnable runnable = new MyRunnable();
  644. private Boolean firstRed = true;
  645. private void doHiTask() {
  646. int isUUStep = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP);
  647. if (isUUStep != 0 && StepCountCheckUtil.isSupportStepCountSensor(this)) { // 开启UU运动
  648. //防止每次都出现系统提示卸载
  649. // LogUtil.i("userid=" + MyApplication.getInstance().getLoginUserId());
  650. // startService(new Intent(mContext, StepService.class)
  651. // .putExtra("my_userid", MyApplication.getInstance().getLoginUserId())
  652. // .putExtra("token", MyApplication.getInstance().mAccessToken));
  653. // PreferenceUtils.putInt(MainActivity.UU_STEP, 1);
  654. // PushManager.resumeWork(MyApplication.getInstance());
  655. }
  656. // doSendSignAutoLog(); // 获取数据库中监控日志上传至服务器操作
  657. //桌面红点显示逻辑
  658. if (OAConfig.canShowRed) {
  659. if (handler == null) {
  660. handler = new Handler();
  661. }
  662. if (runnable == null) {
  663. runnable = new MyRunnable();
  664. }
  665. handler.post(runnable);
  666. }
  667. //语音导航 ,目前还未正式开发
  668. // hiQuickSearch();
  669. //将本地的UU运动步数更新至服务器
  670. StepUtils.doSaveLocalStepsToJudgeHttps();
  671. }
  672. private void hiQuickSearch() {
  673. int qs = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.Q_SEARCH);
  674. if (CommonUtil.isReleaseVersion() || MainActivity.class == null || qs == 1) return;
  675. handler.postDelayed(new Runnable() {
  676. @Override
  677. public void run() {
  678. QSearchPpwindowUtils.qSearchWindows(MainActivity.this);
  679. }
  680. }, 4000);
  681. }
  682. public class MyRunnable implements Runnable {
  683. @Override
  684. public void run() {
  685. handler.postDelayed(runnable, 5000);
  686. BadgeUtil.setBadgeCount(getApplicationContext(), mMsgUnReadNum, R.drawable.hongdian);//启动红点显示逻辑
  687. }
  688. }
  689. private PopupWindow mScorePopupWindow;
  690. private void initScoringWindows() {
  691. View contentView = LayoutInflater.from(ct).inflate(R.layout.layout_menu_scoring, null);
  692. DisplayMetrics dm = getResources().getDisplayMetrics();
  693. int w_screen = dm.widthPixels;
  694. int h_screen = dm.heightPixels;
  695. w_screen = DisplayUtil.dip2px(this, 250);
  696. h_screen = DisplayUtil.dip2px(this, 250);
  697. mScorePopupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
  698. mScorePopupWindow.setTouchable(true);
  699. mScorePopupWindow.setOutsideTouchable(false);
  700. // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
  701. mScorePopupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.pop_round_bg));
  702. // 设置好参数之后再show
  703. mScorePopupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
  704. setbg(0.4f);
  705. contentView.findViewById(R.id.scoring_now_tv).setOnClickListener(new View.OnClickListener() {
  706. @Override
  707. public void onClick(View v) {
  708. try {
  709. Uri uri = Uri.parse("market://details?id=" + getPackageName());
  710. Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  711. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  712. startActivity(intent);
  713. } catch (Exception e) {
  714. IntentUtils.webLinks(ct, "http://apk.91.com/Soft/Android/com.xzjmyk.pm.activity-54.html", "UU互联");
  715. }
  716. mScorePopupWindow.dismiss();
  717. }
  718. });
  719. contentView.findViewById(R.id.complaints_tv).setOnClickListener(new View.OnClickListener() {
  720. @Override
  721. public void onClick(View v) {
  722. Intent intent = new Intent(mContext, FeedbackActivity.class);
  723. intent.putExtra("type", 1);
  724. intent.putExtra(WebViewActivity.EXTRA_URL, mConfig.help_url);
  725. intent.putExtra(WebViewActivity.EXTRA_TITLE, getString(R.string.Rated_suggest));
  726. startActivity(intent);
  727. mScorePopupWindow.dismiss();
  728. }
  729. });
  730. contentView.findViewById(R.id.no_thanking_tv).setOnClickListener(new View.OnClickListener() {
  731. @Override
  732. public void onClick(View v) {
  733. mScorePopupWindow.dismiss();
  734. }
  735. });
  736. PreferenceUtils.putInt(MainActivity.NEW_VERSION_RATING, 1);
  737. }
  738. private void setbg(float alpha) {
  739. setBackgroundAlpha(this, alpha);
  740. if (mScorePopupWindow == null) return;
  741. mScorePopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
  742. @Override
  743. public void onDismiss() {
  744. mScorePopupWindow.dismiss();
  745. clearBackgroundAlpha();
  746. }
  747. });
  748. }
  749. private void clearBackgroundAlpha() {
  750. if (mScorePopupWindow != null && mScorePopupWindow.isShowing()) {
  751. return;
  752. }
  753. if (mUpdatePopupWindow != null && mUpdatePopupWindow.isShowing()) {
  754. return;
  755. }
  756. if (mSchedulePop != null && mSchedulePop.isShowing()) {
  757. return;
  758. }
  759. setBackgroundAlpha(MainActivity.this, 1f);
  760. }
  761. /**
  762. * 获取日程列表
  763. */
  764. private void getScheduleList() {
  765. int cacheDate = CommonUtil.getSharedPreferencesInt(mContext, com.core.app.Constants.CACHE.OBTAIN_SCHEDULE_DATE, 0);
  766. String currentDate = DateFormatUtil.long2Str("yyyyMMdd");
  767. int dateInt = Integer.parseInt(currentDate);
  768. if ((dateInt - cacheDate) >= 1) {
  769. HttpRequest.getInstance().sendRequest("https://mobile.ubtob.net:8443/",
  770. new HttpParams.Builder()
  771. .url("schedule/schedule/getByDaySchedule")
  772. .method(Method.GET)
  773. .addParam("imid", MyApplication.getInstance().getLoginUserId())
  774. .addParam("day", DateFormatUtil.long2Str(System.currentTimeMillis(), DateFormatUtil.YMD))
  775. .addParam("uasUrl", com.core.utils.CommonUtil.getAppBaseUrl(this))
  776. .addParam("emcode", com.core.utils.CommonUtil.getEmcode())
  777. .addParam("master", com.core.utils.CommonUtil.getMaster())
  778. .addParam("sessionId", com.core.utils.CommonUtil.getSharedPreferences(ct, "sessionId"))
  779. .build(), new HttpCallback() {
  780. @Override
  781. public void onSuccess(int flag, Object o) throws Exception {
  782. String currentDate = DateFormatUtil.long2Str("yyyyMMdd");
  783. int dateInt = Integer.parseInt(currentDate);
  784. CommonUtil.putSharedPreferencesInt(mContext, com.core.app.Constants.CACHE.OBTAIN_SCHEDULE_DATE, dateInt);
  785. try {
  786. analysisSchedule(o.toString());
  787. } catch (Exception e) {
  788. clearBackgroundAlpha();
  789. CommonUtil.setSharedPreferences(mContext, com.core.app.Constants.CACHE.OBTAIN_SCHEDULE_DATE, 0);
  790. Log.e("mainschedule", e.toString());
  791. }
  792. }
  793. @Override
  794. public void onFail(int flag, String failStr) throws Exception {
  795. }
  796. });
  797. }
  798. }
  799. private void initSchedulePop(List<TimeHelperBean> timeHelperBeans) {
  800. View scheduelView = View.inflate(this, R.layout.pop_main_schedule, null);
  801. mSchedulePop = new PopupWindow(scheduelView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
  802. int screenHeigh = getResources().getDisplayMetrics().heightPixels;
  803. mSchedulePop.setHeight(Math.round(screenHeigh * 0.7f));
  804. LinearLayout mExitLayout = scheduelView.findViewById(R.id.pop_main_schedule_exit_ll);
  805. mExitLayout.setOnClickListener(new View.OnClickListener() {
  806. @Override
  807. public void onClick(View view) {
  808. if (mSchedulePop != null) {
  809. mSchedulePop.dismiss();
  810. }
  811. clearBackgroundAlpha();
  812. }
  813. });
  814. RecyclerView recyclerView = (RecyclerView) scheduelView.findViewById(R.id.pop_main_schedule_rv);
  815. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  816. MainScheduleAdapter mainScheduleAdapter = new MainScheduleAdapter(timeHelperBeans);
  817. recyclerView.setAdapter(mainScheduleAdapter);
  818. mSchedulePop.setAnimationStyle(com.uas.appme.R.style.MenuAnimationFade);
  819. mSchedulePop.setBackgroundDrawable(new BitmapDrawable());
  820. mSchedulePop.setOnDismissListener(new PopupWindow.OnDismissListener() {
  821. @Override
  822. public void onDismiss() {
  823. if (mSchedulePop != null) {
  824. mSchedulePop.dismiss();
  825. }
  826. clearBackgroundAlpha();
  827. }
  828. });
  829. mSchedulePop.showAtLocation(getWindow().getDecorView().
  830. findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0);
  831. DisplayUtil.backgroundAlpha(MainActivity.this, 0.5f);
  832. }
  833. private void analysisSchedule(String result) {
  834. LogUtil.prinlnLongMsg("mainschedule", result);
  835. if (JSONUtil.validate(result)) {
  836. List<TimeHelperBean> timeHelperBeans = new ArrayList<>();
  837. JSONObject resultObject = JSON.parseObject(result);
  838. JSONArray dataArray = resultObject.getJSONArray("data");
  839. if (dataArray != null && dataArray.size() > 0) {
  840. long currentTimeMillis = System.currentTimeMillis();
  841. Calendar cal = Calendar.getInstance();
  842. cal.setTimeZone(TimeZone.getTimeZone("UTC+8"));
  843. cal.setTime(new Date());
  844. cal.set(Calendar.HOUR, 0);
  845. cal.set(Calendar.SECOND, 1);
  846. cal.set(Calendar.MINUTE, 0);
  847. cal.set(Calendar.MILLISECOND, 0);
  848. long startcal = cal.getTimeInMillis();
  849. long endcal = cal.getTimeInMillis() + 24 * 60 * 60 * 1000;
  850. List<Schedule> systemSchedule = null;
  851. try {
  852. ScheduleUtils.getSystemCalendar(MyApplication.getInstance(), startcal, endcal);
  853. } catch (Exception e) {
  854. }
  855. for (int i = 0; i < dataArray.size(); i++) {
  856. JSONObject dataObject = dataArray.getJSONObject(i);
  857. if (dataObject != null) {
  858. TimeHelperBean timeHelperBean = new TimeHelperBean();
  859. Object scheduleId = dataObject.get("scheduleId");
  860. if (scheduleId == null) {
  861. timeHelperBean.setScheduleId(-1);
  862. } else {
  863. timeHelperBean.setScheduleId(JSONUtil.getInt(dataObject, "scheduleId"));
  864. }
  865. timeHelperBean.setImid(JSONUtil.getInt(dataObject, "imid"));
  866. timeHelperBean.setType(JSONUtil.getText(dataObject, "type"));
  867. timeHelperBean.setAllDay(JSONUtil.getInt(dataObject, "allDay"));
  868. timeHelperBean.setRepeat(JSONUtil.getText(dataObject, "repeat"));
  869. timeHelperBean.setTitle(JSONUtil.getText(dataObject, "title"));
  870. timeHelperBean.setTag(JSONUtil.getText(dataObject, "tag"));
  871. timeHelperBean.setRemarks(JSONUtil.getText(dataObject, "remarks"));
  872. String startTime = JSONUtil.getText(dataObject, "startTime");
  873. timeHelperBean.setStartTime(startTime);
  874. timeHelperBean.setEndTime(JSONUtil.getText(dataObject, "endTime"));
  875. timeHelperBean.setWarnTime(JSONUtil.getInt(dataObject, "warnTime"));
  876. timeHelperBean.setWarnRealTime(JSONUtil.getText(dataObject, "warnRealTime"));
  877. timeHelperBean.setAddress(JSONUtil.getText(dataObject, "address"));
  878. timeHelperBean.setStatus(JSONUtil.getInt(dataObject, "status"));
  879. timeHelperBean.setDetail(JSONUtil.getText(dataObject, "details"));
  880. int genre = JSONUtil.getInt(dataObject, "genre");
  881. timeHelperBean.setScheduleType(genre);
  882. if (genre == 1) {
  883. timeHelperBean.setFromWhere(Schedule.TYPE_BOOK);
  884. } else if (genre == 2) {
  885. timeHelperBean.setFromWhere(Schedule.TYPE_UU);
  886. }
  887. timeHelperBeans.add(timeHelperBean);
  888. if (!ListUtils.isEmpty(systemSchedule)) {
  889. for (Schedule e : systemSchedule) {
  890. if (e.getId() == timeHelperBean.getScheduleId()) {
  891. systemSchedule.remove(e);
  892. break;
  893. }
  894. }
  895. }
  896. }
  897. }
  898. if (systemSchedule != null) {
  899. for (int i = 0; i < systemSchedule.size(); i++) {
  900. Schedule schedule = systemSchedule.get(i);
  901. TimeHelperBean timeHelperBean = new TimeHelperBean();
  902. timeHelperBean.setScheduleId(schedule.getId());
  903. timeHelperBean.setImid(0);
  904. timeHelperBean.setType(schedule.getType());
  905. timeHelperBean.setAllDay(schedule.getAllDay());
  906. timeHelperBean.setRepeat(schedule.getRepeat());
  907. timeHelperBean.setTitle(schedule.getTitle());
  908. timeHelperBean.setTag(schedule.getTag());
  909. timeHelperBean.setRemarks(schedule.getRemarks());
  910. String startTime = DateFormatUtil.long2Str(schedule.getStartTime(), DateFormatUtil.YMD_HMS);
  911. timeHelperBean.setStartTime(startTime);
  912. timeHelperBean.setEndTime(DateFormatUtil.long2Str(schedule.getEndTime(), DateFormatUtil.YMD_HMS));
  913. timeHelperBean.setWarnTime(schedule.getWarnTime());
  914. timeHelperBean.setWarnRealTime(DateFormatUtil.long2Str(schedule.getWarnRealTime(), DateFormatUtil.YMD_HMS));
  915. timeHelperBean.setAddress(schedule.getAddress());
  916. timeHelperBean.setStatus(0);
  917. timeHelperBean.setDetail("");
  918. timeHelperBean.setScheduleType(2);
  919. timeHelperBean.setFromWhere(Schedule.TYPE_PHONE);
  920. timeHelperBeans.add(timeHelperBean);
  921. }
  922. }
  923. Collections.sort(timeHelperBeans);
  924. if (timeHelperBeans.size() != 0) {
  925. initSchedulePop(timeHelperBeans);
  926. }
  927. }
  928. }
  929. }
  930. /**
  931. * 设置页面的透明度
  932. * 兼容华为手机(在个别华为手机上 设置透明度会不成功)
  933. *
  934. * @param bgAlpha 透明度 1表示不透明
  935. */
  936. public void setBackgroundAlpha(Activity activity, float bgAlpha) {
  937. WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
  938. lp.alpha = bgAlpha;
  939. if (bgAlpha == 1) {
  940. activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
  941. } else {
  942. activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug
  943. }
  944. activity.getWindow().setAttributes(lp);
  945. }
  946. public class MyCPCheckUpdateCallback implements CPCheckUpdateCallback {
  947. @Override
  948. public void onCheckUpdateCallback(final AppUpdateInfo info, AppUpdateInfoForInstall infoForInstall) {
  949. if (infoForInstall != null && !TextUtils.isEmpty(infoForInstall.getInstallPath())) {
  950. BDAutoUpdateSDK.cpUpdateInstall(getApplicationContext(), infoForInstall.getInstallPath());
  951. } else if (info != null) {
  952. mUpdatePopupWindow = SettingActivity.showUpdateVersionPopup(MainActivity.this, info);
  953. if (mUpdatePopupWindow != null) {
  954. mUpdatePopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
  955. @Override
  956. public void onDismiss() {
  957. if (mUpdatePopupWindow != null) {
  958. mUpdatePopupWindow.dismiss();
  959. }
  960. clearBackgroundAlpha();
  961. }
  962. });
  963. }
  964. }
  965. }
  966. }
  967. public void updateVersion() {
  968. BDAutoUpdateSDK.cpUpdateCheck(this, new MyCPCheckUpdateCallback());
  969. }
  970. private void doUserCheck() {
  971. if (!MyApplication.getInstance().isNetworkActive()) {
  972. return;
  973. }
  974. if (MyApplication.getInstance().mUserStatusChecked) {
  975. return;
  976. }
  977. LoginHelper.checkStatusForUpdate(this, new LoginHelper.OnCheckedFailedListener() {
  978. @Override
  979. public void onCheckFailed() {
  980. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  981. }
  982. });
  983. }
  984. private void cancelUserCheckIfExist() {
  985. mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
  986. cancelAll("checkStatus");
  987. }
  988. private void checkUserDb(final String userId) {
  989. // 检测用户基本数据库信息的完整性
  990. new Thread(new Runnable() {
  991. @Override
  992. public void run() {
  993. initMsgUnReadTips(userId);
  994. }
  995. }).start();
  996. }
  997. /* 当注销当前用户时,将那些需要当前用户的Fragment销毁,以后重新登陆后,重新加载为初始状态 */
  998. private void removeNeedUserFragment(boolean startAgain) {
  999. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
  1000. if (mMessageFragment != null) {
  1001. fragmentTransaction.remove(mMessageFragment);
  1002. }
  1003. if (mMyFriendFragment != null) {
  1004. fragmentTransaction.remove(mMyFriendFragment);
  1005. }
  1006. if (mWorksFragment != null) {
  1007. fragmentTransaction.remove(mWorksFragment);
  1008. }
  1009. if (mGroupChatFragment != null) {
  1010. fragmentTransaction.remove(mGroupChatFragment);
  1011. }
  1012. if (mMeFragment != null) {
  1013. fragmentTransaction.remove(mMeFragment);
  1014. }
  1015. if (mBusinessCircleFragment != null) {
  1016. fragmentTransaction.remove(mBusinessCircleFragment);
  1017. }
  1018. fragmentTransaction.commitAllowingStateLoss();
  1019. mMessageFragment = null;
  1020. mMyFriendFragment = null;
  1021. mWorksFragment = null;
  1022. mGroupChatFragment = null;
  1023. mMeFragment = null;
  1024. mBusinessCircleFragment = null;
  1025. mLastFragment = null;
  1026. initMessageFragment();
  1027. if (startAgain) {
  1028. Intent intent = new Intent(this, MainActivity.class);
  1029. startActivity(intent);
  1030. }
  1031. }
  1032. private void doSendSignAutoLog() {
  1033. signAutoLogEntity = new ArrayList<>();
  1034. isendEntity = new ArrayList<>();
  1035. signAutoLogEntity = signAutoLogDao.getAllDatas();
  1036. if (ListUtils.isEmpty(signAutoLogEntity)) {
  1037. Log.i("fang", "Logdatas为空");
  1038. return;
  1039. }
  1040. LogUtil.prinlnLongMsg("signAutoLogEntity2", JSON.toJSONString(signAutoLogEntity));
  1041. int size = signAutoLogEntity.size();
  1042. for (int i = 0; i < size; i++) {
  1043. if (signAutoLogEntity.get(i).getSendstatus() == 0) { // 状态为0则未发送过到服务器
  1044. // signAutoLogEntity.remove(i);
  1045. isendEntity.add(signAutoLogEntity.get(i));
  1046. }
  1047. if (i == (size - 1)) {
  1048. LogSendToHttp(isendEntity); // 开始发送
  1049. }
  1050. }
  1051. }
  1052. private void LogSendToHttp(List<SignAutoLogEntity> isendEntity) {
  1053. String url = com.core.app.Constants.IM_BASE_URL() + "user/appAutoLog";
  1054. Map<String, Object> param = new HashMap<>();
  1055. param.put("map", JSON.toJSONString(isendEntity));
  1056. LogUtil.prinlnLongMsg("isendEntity", JSON.toJSONString(isendEntity));
  1057. LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
  1058. if (platform) {
  1059. headers.put("Cookie", "JSESSIONID=" + ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().getCookie());
  1060. } else {
  1061. headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
  1062. }
  1063. ViewUtil.httpSendRequest(this, url, param, mUserCheckHander, headers, LOG_SEND_REQUEST, null, null, "post");
  1064. }
  1065. @Override
  1066. protected void onStop() {
  1067. super.onStop();
  1068. }
  1069. private void saveOfflineTime() {
  1070. long time = System.currentTimeMillis() / 1000;//将现在的时间存起来,
  1071. Log.d("wang", "time_destory::" + time + "");
  1072. PreferenceUtils.putLong(this, Constants.OFFLINE_TIME, time);
  1073. MyApplication.getInstance().mLoginUser.setOfflineTime(time);
  1074. UserDao.getInstance().updateUnLineTime(MyApplication.getInstance().mLoginUser.getUserId(), time);
  1075. }
  1076. @Override
  1077. protected void onDestroy() {
  1078. saveOfflineTime();
  1079. MyApplication.getInstance().unregisterNetWorkObserver(this);
  1080. ListenerManager.getInstance().removeAuthStateChangeListener(this);
  1081. if (mBind) {
  1082. // unbindService(mXmppServiceConnection);
  1083. unbindService(mServiceConnection);
  1084. }
  1085. unregisterReceiver(mUpdateUnReadReceiver);
  1086. unregisterReceiver(mUserLogInOutReceiver);
  1087. screenListener.unregisterListener();
  1088. //移除广播接收
  1089. if (autoPresenter != null) {
  1090. autoPresenter.onDestroy();
  1091. }
  1092. super.onDestroy();
  1093. }
  1094. @Override
  1095. public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
  1096. super.onSaveInstanceState(outState, outPersistentState);
  1097. saveOfflineTime();
  1098. }
  1099. private void restoreState(Bundle savedInstanceState) {
  1100. mLastFragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
  1101. mMessageFragment = (MessageFragment) getSupportFragmentManager().findFragmentByTag(TAG_MESSAGE);
  1102. mMyFriendFragment = (MyFriendFragment) getSupportFragmentManager().findFragmentByTag(TAG_MY);
  1103. mWorksFragment = (WorkPlatFragment) getSupportFragmentManager().findFragmentByTag(TAG_NEARBY);
  1104. mGroupChatFragment = (GroupChatFragment) getSupportFragmentManager().findFragmentByTag(TAG_GROUP_CHAT);
  1105. mMeFragment = (MeFragment) getSupportFragmentManager().findFragmentByTag(TAG_ME);
  1106. mBusinessCircleFragment = (ContactsFragment) getSupportFragmentManager().findFragmentByTag(TAG_BusinessCircle);
  1107. }
  1108. /**
  1109. * @desc:RadioGroup设置监听
  1110. * @author:Administrator on 2016/1/27 16:20
  1111. */
  1112. private void initView(Bundle savedInstanceState) {
  1113. mTabRadioGroup = (DivideRadioGroup) findViewById(R.id.mDivideRadioGroup);
  1114. main_tab_one = findViewById(R.id.main_tab_one);
  1115. main_tab_two = findViewById(R.id.main_tab_two);
  1116. main_tab_five = findViewById(R.id.main_tab_five);
  1117. main_tab_three = findViewById(R.id.main_tab_three);
  1118. mTabRadioGroup.setOnCheckedChangeListener(mTabRadioGroupChangeListener);
  1119. if (savedInstanceState == null) {
  1120. initMessageFragment();
  1121. }
  1122. mMsgUnReadTv = (TextView) findViewById(R.id.main_tab_one_tv);
  1123. unWorkReadTV = (TextView) findViewById(R.id.main_tab_five_tv);
  1124. main_tab_three_tv = (TextView) findViewById(R.id.main_tab_three_tv);
  1125. PushManager.resumeWork(MyApplication.getInstance());
  1126. int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
  1127. if (new_function_notice == 1) {
  1128. main_tab_three_tv.setVisibility(View.INVISIBLE);
  1129. } else {
  1130. main_tab_three_tv.setVisibility(View.VISIBLE);
  1131. }
  1132. unWorkReadTV.setVisibility(CommonUtil.getSharedPreferencesBoolean(ct, com.core.app.Constants.NEW_ME_TAG, false) ? View.GONE : View.VISIBLE);
  1133. platform = ApiUtils.getApiModel() instanceof ApiPlatform;
  1134. initPermission();
  1135. }
  1136. private void initMessageFragment() {
  1137. mTabRadioGroup.check(R.id.main_tab_one);
  1138. if (mMessageFragment == null) {
  1139. mMessageFragment = new MessageFragment();
  1140. changeFragment(mMessageFragment, TAG_MESSAGE);
  1141. updateMessageTitle();
  1142. startAnimator(main_tab_one);
  1143. }
  1144. }
  1145. private void changeFragment(Fragment addFragment, String tag) {
  1146. if (mLastFragment == addFragment) {
  1147. return;
  1148. }
  1149. if (addFragment == null) {
  1150. return;
  1151. }
  1152. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
  1153. if (mLastFragment != null && mLastFragment != addFragment) {// 如果最后一次加载的不是现在要加载的Fragment,那么僵最后一次加载的移出
  1154. fragmentTransaction.detach(mLastFragment);
  1155. }
  1156. if (!addFragment.isAdded())// 如果还没有添加,就加上
  1157. fragmentTransaction.add(R.id.main_content, addFragment, tag);
  1158. if (addFragment.isDetached())
  1159. fragmentTransaction.attach(addFragment);
  1160. mLastFragment = addFragment;
  1161. //尝试不在activity上使用toolbar
  1162. // if (addFragment == mWorksFragment) {
  1163. // hideToolBar();
  1164. // } else {
  1165. // showToolBar();
  1166. // Toolbar mToolBar = getCommonToolBar();
  1167. // if (mToolBar != null) {
  1168. // if (addFragment == mMessageFragment) {
  1169. // mToolBar.setBackgroundResource(R.drawable.common_toolbar_message_bg);
  1170. // } else {
  1171. // mToolBar.setBackgroundResource(R.drawable.common_toolbar_bg);
  1172. // }
  1173. // }
  1174. // }
  1175. fragmentTransaction.commitAllowingStateLoss();
  1176. }
  1177. @Override
  1178. public boolean onKeyDown(int keyCode, KeyEvent event) {
  1179. if (keyCode == KeyEvent.KEYCODE_BACK) {
  1180. Intent intent = new Intent(Intent.ACTION_MAIN);
  1181. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  1182. intent.addCategory(Intent.CATEGORY_HOME);
  1183. startActivity(intent);
  1184. return true;
  1185. }
  1186. return super.onKeyDown(keyCode, event);
  1187. }
  1188. @Override
  1189. public void onAuthStateChange(int authState) {
  1190. mImStatus = authState;
  1191. if (mTabRadioGroup.getCheckedRadioButtonId() == R.id.main_tab_one) {
  1192. updateMessageTitle();
  1193. }
  1194. }
  1195. /**
  1196. * 更改消息在线不在线的状态
  1197. * msg_online>消息(在线) msg_offline>消息(离线) msg_connect">消息(连接中)
  1198. */
  1199. private void updateMessageTitle() {
  1200. int messageTitle = R.string.msg_online;
  1201. /* if (mImStatus == AuthStateListener.AUTH_STATE_NOT) {
  1202. messageTitle = R.string.msg_offline;
  1203. // mMessageFragment.setNetNoticeVisiable(true);
  1204. } else if (mImStatus == AuthStateListener.AUTH_STATE_ING) {
  1205. messageTitle = R.string.msg_connect;
  1206. } else if (mImStatus == AuthStateListener.AUTH_STATE_SUCCESS) {
  1207. messageTitle = R.string.msg_online;
  1208. // mMessageFragment.setNetNoticeVisiable(false);
  1209. }*/
  1210. if (mMessageFragment != null) {
  1211. mMessageFragment.setTitle(messageTitle);
  1212. }
  1213. }
  1214. @Override
  1215. public void onNetWorkStatusChange(boolean connected) {
  1216. // 当网络状态改变时,判断当前用户的状态,是否需要更新
  1217. if (connected) {
  1218. if (!MyApplication.getInstance().mUserStatusChecked) {
  1219. mRetryCheckDelay = 0;
  1220. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  1221. }
  1222. }
  1223. }
  1224. @Override
  1225. protected void onResume() {
  1226. super.onResume();
  1227. LogUtil.d("onResume start:" + DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
  1228. if (!AppConfig.COMPANY) return;
  1229. isPause = false;
  1230. if (mMsgNumNeedUpdate) {
  1231. initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
  1232. }
  1233. requestMyBusiness();
  1234. Runtime.getRuntime().gc();
  1235. int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
  1236. if (new_function_notice == 1) {
  1237. main_tab_three_tv.setVisibility(View.INVISIBLE);
  1238. } else {
  1239. main_tab_three_tv.setVisibility(View.VISIBLE);
  1240. }
  1241. LogUtil.d("onResume end:" + DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS));
  1242. int new_version_rating = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_VERSION_RATING);
  1243. if (new_version_rating != 1 && MyApplication.getInstance().isNetworkActive()) {
  1244. showsScoreWindowJudge(); // 显示为UU评分对话框逻辑
  1245. }
  1246. }
  1247. private void showsScoreWindowJudge() {
  1248. List<WorkModel> models = WorkModelDao.getInstance().query(true);
  1249. if (ListUtils.isEmpty(models)) return;
  1250. String off_time = models.get(models.size() - 1).getOffTime();
  1251. if (StringUtil.isEmpty(off_time)) return;
  1252. String cur_time = DateFormatUtil.long2Str(System.currentTimeMillis(), "HH:mm");
  1253. if (cur_time.compareTo(off_time) > 0) {
  1254. new Handler().postDelayed(new Runnable() { // 下班时间
  1255. @Override
  1256. public void run() {
  1257. initScoringWindows(); // 评价UU弹框
  1258. }
  1259. }, 1000);
  1260. }
  1261. Log.i("off_time,cur_time", off_time + "," + cur_time + ":" + cur_time.compareTo(off_time));
  1262. }
  1263. @Override
  1264. protected void onPause() {
  1265. super.onPause();
  1266. isPause = true;
  1267. }
  1268. private void initMsgUnReadTips(String userId) {// 初始化未读条数
  1269. // 消息未读条数累加
  1270. mMsgUnReadNum = FriendDao.getInstance().getMsgUnReadNumTotal(userId);
  1271. mUnReadHandler.post(new Runnable() {
  1272. @Override
  1273. public void run() {
  1274. updateMsgUnReadTv();
  1275. }
  1276. });
  1277. }
  1278. private void updateMsgUnReadTv() {
  1279. if (mMsgUnReadNum > 0) {
  1280. mMsgUnReadTv.setVisibility(View.VISIBLE);
  1281. String numStr = mMsgUnReadNum >= 99 ? "99+" : mMsgUnReadNum + "";
  1282. mMsgUnReadTv.setText(numStr);
  1283. } else {
  1284. mMsgUnReadTv.setVisibility(View.INVISIBLE);
  1285. }
  1286. }
  1287. public void exitMucChat(String toUserId) {
  1288. if (mCoreService != null) {
  1289. mCoreService.exitMucChat(toUserId);
  1290. }
  1291. }
  1292. public void sendNewFriendMessage(String toUserId, NewFriendMessage message) {
  1293. if (mBind && mXmppService != null) {
  1294. mXmppService.sendNewFriendMessage(toUserId, message);
  1295. }
  1296. }
  1297. /**
  1298. * 获得fragment对象
  1299. *
  1300. * @return
  1301. */
  1302. public BusinessCircleFragment getBusinessCircleFragment() {
  1303. FragmentManager sfmanager = getSupportFragmentManager();
  1304. return (BusinessCircleFragment) sfmanager.findFragmentByTag(TAG_BusinessCircle);
  1305. }
  1306. public void setUnReader(int num) {
  1307. mMsgUnReadNum = mMsgUnReadNum - oldERPNum > 0 ? (mMsgUnReadNum - oldERPNum) : 0;
  1308. mMsgUnReadNum = mMsgUnReadNum + num;
  1309. oldERPNum = num;
  1310. updateMsgUnReadTv();
  1311. }
  1312. }