MainActivity.java 40 KB

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