MainActivity.java 45 KB

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