MainActivity.java 48 KB

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