MainActivity.java 46 KB

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