MainActivity.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  1. package com.xzjmyk.pm.activity.ui;
  2. import android.app.ActivityManager;
  3. import android.content.BroadcastReceiver;
  4. import android.content.ComponentName;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.content.ServiceConnection;
  9. import android.os.Build;
  10. import android.os.Bundle;
  11. import android.os.Handler;
  12. import android.os.IBinder;
  13. import android.os.Message;
  14. import android.os.Messenger;
  15. import android.os.PersistableBundle;
  16. import android.support.v4.app.Fragment;
  17. import android.support.v4.app.FragmentManager;
  18. import android.support.v4.app.FragmentTransaction;
  19. import android.util.Log;
  20. import android.view.KeyEvent;
  21. import android.view.View;
  22. import android.widget.TextView;
  23. import com.android.volley.Response;
  24. import com.android.volley.VolleyError;
  25. import com.baidu.android.pushservice.PushConstants;
  26. import com.baidu.android.pushservice.PushManager;
  27. import com.baidu.autoupdatesdk.BDAutoUpdateSDK;
  28. import com.baidu.autoupdatesdk.UICheckUpdateCallback;
  29. import com.xzjmyk.pm.activity.AppConfig;
  30. import com.xzjmyk.pm.activity.MyApplication;
  31. import com.xzjmyk.pm.activity.NetWorkObservable;
  32. import com.xzjmyk.pm.activity.R;
  33. import com.xzjmyk.pm.activity.bean.User;
  34. import com.xzjmyk.pm.activity.bean.circle.CircleMessage;
  35. import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
  36. import com.xzjmyk.pm.activity.broadcast.MsgBroadcast;
  37. import com.xzjmyk.pm.activity.db.dao.FriendDao;
  38. import com.xzjmyk.pm.activity.db.dao.UserDao;
  39. import com.xzjmyk.pm.activity.helper.LoginHelper;
  40. import com.xzjmyk.pm.activity.ui.account.LoginActivity;
  41. import com.xzjmyk.pm.activity.ui.base.BaseActivity;
  42. import com.xzjmyk.pm.activity.ui.circle.BusinessCircleFragment;
  43. import com.xzjmyk.pm.activity.ui.contact.ContactFragment;
  44. import com.xzjmyk.pm.activity.ui.erp.fragment.WorksFragment;
  45. import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
  46. import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
  47. import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
  48. import com.xzjmyk.pm.activity.ui.erp.util.UmengUtil;
  49. import com.xzjmyk.pm.activity.ui.erp.util.oa.AutoErpService;
  50. import com.xzjmyk.pm.activity.ui.find.MyFriendFragment;
  51. import com.xzjmyk.pm.activity.ui.groupchat.GroupChatFragment;
  52. import com.xzjmyk.pm.activity.ui.me.MeFragment;
  53. import com.xzjmyk.pm.activity.ui.me.ScreenListener;
  54. import com.xzjmyk.pm.activity.ui.message.MessageFragment;
  55. import com.xzjmyk.pm.activity.util.Constants;
  56. import com.xzjmyk.pm.activity.util.PreferenceUtils;
  57. import com.xzjmyk.pm.activity.view.DivideRadioGroup;
  58. import com.xzjmyk.pm.activity.volley.ArrayResult;
  59. import com.xzjmyk.pm.activity.volley.FastVolley;
  60. import com.xzjmyk.pm.activity.volley.Result;
  61. import com.xzjmyk.pm.activity.volley.StringJsonArrayRequest;
  62. import com.xzjmyk.pm.activity.xmpp.CoreService;
  63. import com.xzjmyk.pm.activity.xmpp.ListenerManager;
  64. import com.xzjmyk.pm.activity.xmpp.listener.AuthStateListener;
  65. import com.xzjmyk.pm.newpedo.utils.StepCountCheckUtil;
  66. import java.util.HashMap;
  67. import java.util.List;
  68. /**
  69. * @项目名称: SkWeiChat-Baidu
  70. * @包名: com.xzjmyk.pm.activity.ui
  71. * @作者:王阳
  72. * @创建时间: 2015年10月16日 下午3:14:20
  73. * @描述: Fragment所寄宿的Activity
  74. * @SVN版本号: $Rev$
  75. * @修改人: $Author$
  76. * @修改时间: $Date$
  77. * @修改的内容: TODO
  78. */
  79. public class MainActivity extends BaseActivity implements NetWorkObservable.NetWorkObserver, AuthStateListener {
  80. public static String HASHCODE = "MainActivity";
  81. public static boolean isUnReadWork; //判断我的空间是否有新内容
  82. private static final String TAG_MESSAGE = "message";
  83. private static final String TAG_MY = "myfriend";
  84. private static final String TAG_NEARBY = "nearby";
  85. private static final String TAG_GROUP_CHAT = "group_chat";
  86. private static final String TAG_ME = "me";
  87. private static final String TAG_BusinessCircle = "my_BusinessCircle";
  88. /* UserCheck */
  89. private static final int MSG_USER_CHECK = 0x1;
  90. // 因为RadioGroup的check方法,会调用onCheckChange两次,用mLastFragment保存最后一次添加的fragment,防止重复add
  91. // fragment 出错
  92. private static final int RETRY_CHECK_DELAY_MAX = 30000;// 为成功的情况下,最长30s检测一次
  93. public static String SIP_DOMAIN = "120.24.211.24";
  94. public static String SIP_SERVER_HOST = "120.24.211.24";
  95. public String SIP_USERNAME = "10000072";
  96. private boolean mBind;
  97. private CoreService mXmppService;
  98. private FastVolley mFastVolley;
  99. //private BusinessCircleFragment mBusinessCircleFragment;
  100. private ActivityManager mActivityManager;
  101. // 界面组件
  102. private DivideRadioGroup mTabRadioGroup;
  103. /**
  104. * @注释:主界面Fragment
  105. */
  106. private Fragment mLastFragment;
  107. private MessageFragment mMessageFragment;
  108. private MyFriendFragment mMyFriendFragment;//我的朋友---相互关注,单项关注,房间
  109. private WorksFragment mWorksFragment;//工作
  110. private GroupChatFragment mGroupChatFragment;//群聊
  111. private MeFragment mMeFragment;//我
  112. private ContactFragment mBusinessCircleFragment;
  113. public static String BAIDU_PUSH = "BAIDUPUSH";
  114. public static String UU_STEP = "UUSTEP";
  115. private boolean mXmppBind;
  116. private CoreService mCoreService;
  117. private boolean isPause = true;// 界面是否暂停
  118. private ScreenListener screenListener;//锁屏开屏监听
  119. private int mRetryCheckDelay = 0;
  120. public static int UPDATA_LIST = 101;
  121. public static String NEW_FUNCTION_NOTICE = "NEW_FUNCTION_NOTICE";
  122. private TextView main_tab_three_tv;
  123. private Handler mUserCheckHander = new Handler() {
  124. public void handleMessage(Message msg) {
  125. if (msg.what == MSG_USER_CHECK) {
  126. if (mRetryCheckDelay < RETRY_CHECK_DELAY_MAX) {
  127. mRetryCheckDelay += 5000;
  128. }
  129. mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
  130. doUserCheck();
  131. }
  132. }
  133. };
  134. private int mImStatus = AuthStateListener.AUTH_STATE_NOT;
  135. public int getmImStatus() {
  136. return mImStatus;
  137. }
  138. private ServiceConnection mXmppServiceConnection = new ServiceConnection() {
  139. @Override
  140. public void onServiceDisconnected(ComponentName name) {
  141. mCoreService = null;
  142. }
  143. @Override
  144. public void onServiceConnected(ComponentName name, IBinder service) {
  145. mCoreService = ((CoreService.CoreServiceBinder) service).getService();
  146. mImStatus = mCoreService.isAuthenticated() ? AuthStateListener.AUTH_STATE_SUCCESS : AuthStateListener.AUTH_STATE_NOT;
  147. }
  148. };
  149. /**
  150. * 启动返回
  151. * by gongpm
  152. */
  153. @Override
  154. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  155. super.onActivityResult(requestCode, resultCode, data);
  156. if (UPDATA_LIST == requestCode) {
  157. //TODO 更新
  158. // if (mBusinessCircleFragment != null) {
  159. // mBusinessCircleFragment.onResult();
  160. // }
  161. } else if (requestCode == 0x11) {
  162. if (resultCode == 0x12) {
  163. mTabRadioGroup.check(R.id.main_tab_five);
  164. }
  165. }
  166. }
  167. int oldERPNum = 0;
  168. /**
  169. * @desc:主页菜单入口
  170. * @author:Administrator on 2016/1/26 10:03
  171. */
  172. private DivideRadioGroup.OnCheckedChangeListener mTabRadioGroupChangeListener = new DivideRadioGroup.OnCheckedChangeListener() {
  173. @Override
  174. public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
  175. if (checkedId == R.id.main_tab_one) {
  176. if (mMessageFragment == null) {
  177. mMessageFragment = new MessageFragment();
  178. }
  179. //TODO 红点问题
  180. // mMessageFragment.setOnRefreshRedUI(new MessageFragment.OnRefreshUIListener() {
  181. // @Override
  182. // public void updata(int num) {
  183. // //当首页有更新,mainactivity跟着更新页面
  184. // mMsgUnReadNum = mMsgUnReadNum - oldERPNum > 0 ? (mMsgUnReadNum - oldERPNum) : 0;
  185. // mMsgUnReadNum = mMsgUnReadNum + num;
  186. // oldERPNum = num;
  187. // updateMsgUnReadTv();
  188. // }
  189. // });
  190. changeFragment(mMessageFragment, TAG_MESSAGE);//消息
  191. updateMessageTitle();
  192. } else if (checkedId == R.id.main_tab_two) {
  193. if (mBusinessCircleFragment == null) {
  194. mBusinessCircleFragment = new ContactFragment();
  195. }
  196. changeFragment(mBusinessCircleFragment, TAG_BusinessCircle);//发现
  197. getSupportActionBar().setTitle("通讯录");
  198. } else if (checkedId == R.id.main_tab_three) { //点击工作选项
  199. if (mWorksFragment == null) {
  200. mWorksFragment = new WorksFragment();
  201. }
  202. changeFragment(mWorksFragment, TAG_NEARBY);
  203. getSupportActionBar().setTitle(R.string.nearby);
  204. // PreferenceUtils.putLong(mContext, TIME_MAIN, timeMin);
  205. }
  206. /* else if (checkedId == R.id.main_tab_four) {
  207. if (mGroupChatFragment == null) {
  208. mGroupChatFragment = new GroupChatFragment();
  209. }
  210. changeFragment(mGroupChatFragment, TAG_GROUP_CHAT);//群聊
  211. getSupportActionBar().setTitle(R.string.group_chat);
  212. }*/
  213. else if (checkedId == R.id.main_tab_five) {
  214. if (mMeFragment == null) {
  215. mMeFragment = new MeFragment();
  216. }
  217. changeFragment(mMeFragment, TAG_ME);//我
  218. getSupportActionBar().setTitle(R.string.me);
  219. }
  220. }
  221. };
  222. private AppConfig config;
  223. private String mLoginUserId;
  224. private void requestMyBusiness() {
  225. if (config == null) {
  226. config = MyApplication.getInstance().getConfig();
  227. }
  228. if (mLoginUserId == null || mLoginUserId.length() <= 0) {
  229. mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
  230. }
  231. HashMap<String, String> params = new HashMap<String, String>();
  232. params.put("access_token", MyApplication.getInstance().mAccessToken);
  233. params.put("pageSize", "1");
  234. StringJsonArrayRequest<CircleMessage> request = new StringJsonArrayRequest<CircleMessage>(
  235. config.MSG_LIST, new Response.ErrorListener() {
  236. @Override
  237. public void onErrorResponse(VolleyError arg0) {
  238. }
  239. }, new StringJsonArrayRequest.Listener<CircleMessage>() {
  240. @Override
  241. public void onResponse(ArrayResult<CircleMessage> result) {
  242. boolean success = Result.defaultParser(ct, result, false);
  243. if (success) {
  244. //获取到数据
  245. try {
  246. List<CircleMessage> datas = result.getData();
  247. if (ListUtils.isEmpty(datas)) return;
  248. long time = datas.get(0).getTime();
  249. String userId = datas.get(0).getUserId();
  250. Long oldTime = PreferenceUtils.getLong("TIMEMAIN", -1);
  251. if (!userId.equals(MyApplication.getInstance().mLoginUser.getUserId()) && oldTime < time) {
  252. setShowUnRead(true);
  253. } else {
  254. setShowUnRead(false);
  255. }
  256. } catch (Exception e) {
  257. }
  258. } else {
  259. setShowUnRead(false);
  260. }
  261. }
  262. }, CircleMessage.class, params);
  263. if (mFastVolley == null) {
  264. mFastVolley = MyApplication.getInstance().getFastVolley();
  265. }
  266. mFastVolley.addDefaultRequest(HASHCODE, request);
  267. }
  268. private void setShowUnRead(boolean isUnRead) {
  269. isUnReadWork = isUnRead;
  270. if (isUnRead) {
  271. unWorkReadTV.setVisibility(View.VISIBLE);
  272. } else {
  273. unWorkReadTV.setVisibility(View.GONE);
  274. }
  275. if (mMeFragment == null) return;
  276. mMeFragment.setChangerRemain(!isUnRead);
  277. }
  278. /***********************
  279. * 未读数量的更新功能
  280. *****************/
  281. private Handler mUnReadHandler = new Handler();
  282. private TextView mMsgUnReadTv;
  283. private TextView unWorkReadTV;
  284. private int mMsgUnReadNum = 0;
  285. private BroadcastReceiver mUserLogInOutReceiver = new BroadcastReceiver() {
  286. @Override
  287. public void onReceive(Context context, Intent intent) {
  288. String action = intent.getAction();
  289. if (action.equals(LoginHelper.ACTION_LOGIN)) {
  290. User user = MyApplication.getInstance().mLoginUser;
  291. Intent startIntent = CoreService.getIntent(MainActivity.this, user.getUserId(), user.getPassword(), user.getNickName());
  292. startService(startIntent);
  293. // ToastUtil.showNormalToast(MainActivity.this, "开始Xmpp登陆");
  294. checkUserDb(user.getUserId());
  295. mTabRadioGroup.clearCheck();
  296. mTabRadioGroup.check(R.id.main_tab_one);
  297. } else if (action.equals(LoginHelper.ACTION_LOGOUT)) {
  298. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_SIMPLE_TELPHONE;
  299. mCoreService.logout();
  300. cancelUserCheckIfExist();
  301. startActivity(new Intent(MainActivity.this, LoginActivity.class));
  302. // mFindRb.setChecked(true);
  303. MainActivity.this.finish();
  304. removeNeedUserFragment(false);
  305. } else if (action.equals(LoginHelper.ACTION_CONFLICT)) {
  306. // 改变用户状态
  307. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_TOKEN_CHANGE;
  308. mCoreService.logout();
  309. removeNeedUserFragment(true);
  310. cancelUserCheckIfExist();
  311. // 弹出对话框---用户冲突LoginHelper.STATUS_USER_TOKEN_CHANGE
  312. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  313. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
  314. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
  315. } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
  316. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
  317. }
  318. } else if (action.equals(LoginHelper.ACTION_TOKEN)) { //TOKEN异常
  319. // 改变用户状态
  320. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_TOKEN_CHANGE;
  321. mCoreService.logout();
  322. removeNeedUserFragment(true);
  323. cancelUserCheckIfExist();
  324. // 弹出对话框---LoginHelper.STATUS_USER_TOKEN_CHANGE=4
  325. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  326. if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
  327. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
  328. } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
  329. mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
  330. }
  331. } else if (action.equals(LoginHelper.ACTION_NEED_UPDATE)) {
  332. // mFindRb.setChecked(true);
  333. removeNeedUserFragment(true);
  334. cancelUserCheckIfExist();
  335. // 弹出对话框
  336. startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
  337. } else if (action.equals(LoginHelper.ACTION_LOGIN_GIVE_UP)) {
  338. cancelUserCheckIfExist();
  339. MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_NO_UPDATE;
  340. mCoreService.logout();
  341. }
  342. }
  343. };
  344. private boolean mMsgNumNeedUpdate = false;
  345. private BroadcastReceiver mUpdateUnReadReceiver = new BroadcastReceiver() {
  346. @Override
  347. public void onReceive(Context context, Intent intent) {
  348. if (!AppConfig.COMPANY) return;
  349. String action = intent.getAction();
  350. if (action.equals(MsgBroadcast.ACTION_MSG_NUM_UPDATE)) {
  351. int operation = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_OPERATION, MsgBroadcast.NUM_ADD);
  352. int count = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_COUNT, 0);
  353. mMsgUnReadNum = (operation == MsgBroadcast.NUM_ADD) ? mMsgUnReadNum + count : mMsgUnReadNum - count;
  354. updateMsgUnReadTv();
  355. } else if (action.equals(MsgBroadcast.ACTION_MSG_NUM_RESET)) {
  356. if (isPause) {// 等待恢复的时候更新
  357. mMsgNumNeedUpdate = true;
  358. } else {// 立即更新
  359. initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
  360. }
  361. }
  362. }
  363. };
  364. private ServiceConnection mServiceConnection = new ServiceConnection() {
  365. @Override
  366. public void onServiceDisconnected(ComponentName name) {
  367. mXmppService = null;
  368. }
  369. @Override
  370. public void onServiceConnected(ComponentName name, IBinder service) {
  371. mXmppService = ((CoreService.CoreServiceBinder) service).getService();
  372. }
  373. };
  374. @Override
  375. protected void onCreate(Bundle savedInstanceState) {
  376. super.onCreate(savedInstanceState);
  377. getSupportActionBar().setDisplayShowHomeEnabled(false);
  378. getSupportActionBar().setDisplayHomeAsUpEnabled(false);
  379. setContentView(R.layout.activity_main);
  380. SIP_USERNAME = MyApplication.getInstance().mLoginUser.getUserId();
  381. String host = mConfig.MeetingHost;
  382. SIP_DOMAIN = host == null ? "120.24.211.24" : host;
  383. SIP_SERVER_HOST = host == null ? "120.24.211.24" : host;
  384. PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY,
  385. CommonUtil.getMetaValue(this, "api_key"));
  386. int isPush = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.BAIDU_PUSH);
  387. if (isPush == 0) {
  388. PushManager.stopWork(this);
  389. }
  390. int isUUStep = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP);
  391. if (isUUStep != 0 && StepCountCheckUtil.isSupportStepCountSensor(this)) {
  392. startService(new Intent(mContext, com.xzjmyk.pm.newpedo.service.StepService.class));
  393. // PreferenceUtils.putInt(NewStepActivity.UU_STEP_NOTICE, 1);
  394. PreferenceUtils.putInt(MainActivity.UU_STEP, 1);
  395. PushManager.resumeWork(MyApplication.getInstance());
  396. }
  397. startService(new Intent(this, AutoErpService.class));
  398. mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
  399. if (savedInstanceState != null) {
  400. restoreState(savedInstanceState);
  401. }
  402. initView(savedInstanceState);//---
  403. // 注册网络改变回调
  404. MyApplication.getInstance().registerNetWorkObserver(this);
  405. //更新版本已升级到最新版本
  406. updateVersion();
  407. // 绑定监听
  408. ListenerManager.getInstance().addAuthStateChangeListener(this);
  409. // 注册消息更新广播
  410. IntentFilter msgIntentFilter = new IntentFilter();
  411. msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_UPDATE);
  412. msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_RESET);
  413. registerReceiver(mUpdateUnReadReceiver, msgIntentFilter);
  414. // 注册用户登录状态广播
  415. registerReceiver(mUserLogInOutReceiver, LoginHelper.getLogInOutActionFilter());
  416. // 绑定服务
  417. mXmppBind = bindService(CoreService.getIntent(), mXmppServiceConnection, BIND_AUTO_CREATE);
  418. // 检查用户的状态,做不同的初始化工作
  419. User loginUser = MyApplication.getInstance().mLoginUser;
  420. if (!LoginHelper.isUserValidation(loginUser)) {
  421. LoginHelper.prepareUser(this);
  422. }
  423. if (!MyApplication.getInstance().mUserStatusChecked) {// 用户状态没有检测,那么开始检测
  424. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  425. } else {
  426. if (MyApplication.getInstance().mUserStatus == LoginHelper.STATUS_USER_VALIDATION) {
  427. LoginHelper.broadcastLogin(this);
  428. } else {// 重新检测
  429. MyApplication.getInstance().mUserStatusChecked = false;
  430. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  431. }
  432. }
  433. mBind = bindService(CoreService.getIntent(), mServiceConnection, BIND_AUTO_CREATE);
  434. screenListener = new ScreenListener(this);
  435. screenListener.begin(new ScreenListener.ScreenStateListener() {
  436. @Override
  437. public void onScreenOn() {
  438. Log.d("wang", "MainActivity....开屏");
  439. }
  440. @Override
  441. public void onScreenOff() {
  442. Log.d("wang", "MainActivity....锁屏");
  443. }
  444. @Override
  445. public void onUserPresent() {
  446. Log.d("wang", "MainActivity....解锁");
  447. }
  448. });
  449. //查询数据库,取出中文名:
  450. // DBManager dbManager = new DBManager(ct);
  451. // List<EmployeesEntity> db = dbManager.select_getEmployee(
  452. // new String[]{CommonUtil.getSharedPreferences(ct, "erp_master"),
  453. // CommonUtil.getSharedPreferences(ct, "erp_username")}
  454. // , "whichsys=? and em_code=? ");
  455. // if (!ListUtils.isEmpty(db)){
  456. // if (!StringUtils.isEmpty(db.get(0).getEM_NAME())){
  457. // CommonUtil.setSharedPreferences(ct,"erp_emname",db.get(0).getEM_NAME());
  458. // }
  459. // }
  460. // dbManager.closeDB();
  461. //开启APP后自动开启UU运动服务,这里为了耗电占内存等情况暂时不设置开启APP自动开启UU运动
  462. // openUUStepService();
  463. String ids= UmengUtil.getDeviceInfo(ct);
  464. LogUtil.i(ids);
  465. }
  466. private Messenger messenger;
  467. private Messenger mGetReplyMessenger = new Messenger(new Handler());
  468. public void updateVersion() {
  469. BDAutoUpdateSDK.uiUpdateAction(this, new UICheckUpdateCallback() {
  470. @Override
  471. public void onCheckComplete() {
  472. }
  473. });
  474. }
  475. private void doUserCheck() {
  476. if (!MyApplication.getInstance().isNetworkActive()) {
  477. // if (mMessageFragment!=null)
  478. // mMessageFragment.setNetNoticeVisiable(true);
  479. return;
  480. }
  481. // if (mMessageFragment!=null) mMessageFragment.setNetNoticeVisiable(false);
  482. if (MyApplication.getInstance().mUserStatusChecked) {
  483. return;
  484. }
  485. LoginHelper.checkStatusForUpdate(this, new LoginHelper.OnCheckedFailedListener() {
  486. @Override
  487. public void onCheckFailed() {
  488. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  489. }
  490. });
  491. }
  492. private void cancelUserCheckIfExist() {
  493. mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
  494. cancelAll("checkStatus");
  495. }
  496. private void checkUserDb(final String userId) {
  497. // 检测用户基本数据库信息的完整性
  498. new Thread(new Runnable() {
  499. @Override
  500. public void run() {
  501. initMsgUnReadTips(userId);
  502. }
  503. }).start();
  504. }
  505. /* 当注销当前用户时,将那些需要当前用户的Fragment销毁,以后重新登陆后,重新加载为初始状态 */
  506. private void removeNeedUserFragment(boolean startAgain) {
  507. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
  508. if (mMessageFragment != null) {
  509. fragmentTransaction.remove(mMessageFragment);
  510. }
  511. if (mMyFriendFragment != null) {
  512. fragmentTransaction.remove(mMyFriendFragment);
  513. }
  514. if (mWorksFragment != null) {
  515. fragmentTransaction.remove(mWorksFragment);
  516. }
  517. if (mGroupChatFragment != null) {
  518. fragmentTransaction.remove(mGroupChatFragment);
  519. }
  520. if (mMeFragment != null) {
  521. fragmentTransaction.remove(mMeFragment);
  522. }
  523. if (mBusinessCircleFragment != null) {
  524. fragmentTransaction.remove(mBusinessCircleFragment);
  525. }
  526. fragmentTransaction.commitAllowingStateLoss();
  527. mMessageFragment = null;
  528. mMyFriendFragment = null;
  529. mWorksFragment = null;
  530. mGroupChatFragment = null;
  531. mMeFragment = null;
  532. mBusinessCircleFragment = null;
  533. mLastFragment = null;
  534. if (startAgain) {
  535. Intent intent = new Intent(this, MainActivity.class);
  536. startActivity(intent);
  537. }
  538. }
  539. @Override
  540. protected void onStop() {
  541. super.onStop();
  542. saveOfflineTime();
  543. }
  544. private void saveOfflineTime() {
  545. long time = System.currentTimeMillis() / 1000;//将现在的时间存起来,
  546. Log.d("wang", "time_destory::" + time + "");
  547. PreferenceUtils.putLong(this, Constants.OFFLINE_TIME, time);
  548. MyApplication.getInstance().mLoginUser.setOfflineTime(time);
  549. UserDao.getInstance().updateUnLineTime(MyApplication.getInstance().mLoginUser.getUserId(), time);
  550. }
  551. @Override
  552. protected void onDestroy() {
  553. saveOfflineTime();
  554. MyApplication.getInstance().unregisterNetWorkObserver(this);
  555. ListenerManager.getInstance().removeAuthStateChangeListener(this);
  556. if (mBind) {
  557. unbindService(mXmppServiceConnection);
  558. }
  559. unregisterReceiver(mUpdateUnReadReceiver);
  560. unregisterReceiver(mUserLogInOutReceiver);
  561. screenListener.unregisterListener();
  562. //移除广播接收
  563. super.onDestroy();
  564. }
  565. @Override
  566. public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
  567. super.onSaveInstanceState(outState, outPersistentState);
  568. saveOfflineTime();
  569. }
  570. private void restoreState(Bundle savedInstanceState) {
  571. mLastFragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
  572. mMessageFragment = (MessageFragment) getSupportFragmentManager().findFragmentByTag(TAG_MESSAGE);
  573. mMyFriendFragment = (MyFriendFragment) getSupportFragmentManager().findFragmentByTag(TAG_MY);
  574. mWorksFragment = (WorksFragment) getSupportFragmentManager().findFragmentByTag(TAG_NEARBY);
  575. mGroupChatFragment = (GroupChatFragment) getSupportFragmentManager().findFragmentByTag(TAG_GROUP_CHAT);
  576. mMeFragment = (MeFragment) getSupportFragmentManager().findFragmentByTag(TAG_ME);
  577. mBusinessCircleFragment = (ContactFragment) getSupportFragmentManager().findFragmentByTag(TAG_BusinessCircle);
  578. }
  579. /**
  580. * @desc:RadioGroup设置监听
  581. * @author:Administrator on 2016/1/27 16:20
  582. */
  583. private void initView(Bundle savedInstanceState) {
  584. mTabRadioGroup = (DivideRadioGroup) findViewById(R.id.main_tab_radio_group);
  585. mTabRadioGroup.setOnCheckedChangeListener(mTabRadioGroupChangeListener);
  586. if (savedInstanceState == null) {
  587. mTabRadioGroup.check(R.id.main_tab_one);
  588. }
  589. mMsgUnReadTv = (TextView) findViewById(R.id.main_tab_one_tv);
  590. unWorkReadTV = (TextView) findViewById(R.id.main_tab_five_tv);
  591. main_tab_three_tv = (TextView) findViewById(R.id.main_tab_three_tv);
  592. // //TODO 当前隐藏新功能提醒红点
  593. PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
  594. PushManager.resumeWork(MyApplication.getInstance());
  595. int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
  596. if (new_function_notice == 1) {
  597. main_tab_three_tv.setVisibility(View.INVISIBLE);
  598. } else {
  599. main_tab_three_tv.setVisibility(View.VISIBLE);
  600. }
  601. Log.i("new_function_notice", new_function_notice + "");
  602. }
  603. private void changeFragment(Fragment addFragment, String tag) {
  604. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
  605. if (mLastFragment == addFragment) {
  606. return;
  607. }
  608. if (mLastFragment != null && mLastFragment != addFragment) {// 如果最后一次加载的不是现在要加载的Fragment,那么僵最后一次加载的移出
  609. fragmentTransaction.detach(mLastFragment);
  610. }
  611. if (addFragment == null) {
  612. return;
  613. }
  614. if (!addFragment.isAdded())// 如果还没有添加,就加上
  615. fragmentTransaction.add(R.id.main_content, addFragment, tag);
  616. if (addFragment.isDetached())
  617. fragmentTransaction.attach(addFragment);
  618. mLastFragment = addFragment;
  619. fragmentTransaction.commitAllowingStateLoss();
  620. }
  621. public boolean onKeyDown(int keyCode, KeyEvent event) {
  622. if (keyCode == KeyEvent.KEYCODE_BACK) {
  623. Intent intent = new Intent(Intent.ACTION_MAIN);
  624. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  625. intent.addCategory(Intent.CATEGORY_HOME);
  626. startActivity(intent);
  627. return true;
  628. }
  629. return super.onKeyDown(keyCode, event);
  630. }
  631. @Override
  632. public void onAuthStateChange(int authState) {
  633. mImStatus = authState;
  634. if (mTabRadioGroup.getCheckedRadioButtonId() == R.id.main_tab_one) {
  635. updateMessageTitle();
  636. }
  637. }
  638. /**
  639. * 更改消息在线不在线的状态
  640. * msg_online>消息(在线) msg_offline>消息(离线) msg_connect">消息(连接中)
  641. */
  642. private void updateMessageTitle() {
  643. if (mImStatus == AuthStateListener.AUTH_STATE_NOT) {
  644. getSupportActionBar().setTitle(R.string.msg_offline);
  645. // mMessageFragment.setNetNoticeVisiable(true);
  646. } else if (mImStatus == AuthStateListener.AUTH_STATE_ING) {
  647. getSupportActionBar().setTitle(R.string.msg_connect);
  648. } else if (mImStatus == AuthStateListener.AUTH_STATE_SUCCESS) {
  649. getSupportActionBar().setTitle(R.string.msg_online);
  650. // mMessageFragment.setNetNoticeVisiable(false);
  651. }
  652. }
  653. @Override
  654. public void onNetWorkStatusChange(boolean connected) {
  655. // 当网络状态改变时,判断当前用户的状态,是否需要更新
  656. if (connected) {
  657. if (!MyApplication.getInstance().mUserStatusChecked) {
  658. mRetryCheckDelay = 0;
  659. mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
  660. }
  661. }
  662. }
  663. @Override
  664. protected void onResume() {
  665. super.onResume();
  666. if (!AppConfig.COMPANY) return;
  667. isPause = false;
  668. if (mMsgNumNeedUpdate) {
  669. initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
  670. }
  671. requestMyBusiness();
  672. Runtime.getRuntime().gc();
  673. int new_function_notice = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.NEW_FUNCTION_NOTICE);
  674. if (new_function_notice == 1) {
  675. main_tab_three_tv.setVisibility(View.INVISIBLE);
  676. } else {
  677. main_tab_three_tv.setVisibility(View.VISIBLE);
  678. }
  679. }
  680. @Override
  681. protected void onPause() {
  682. super.onPause();
  683. isPause = true;
  684. }
  685. private void initMsgUnReadTips(String userId) {// 初始化未读条数
  686. // 消息未读条数累加
  687. mMsgUnReadNum = FriendDao.getInstance().getMsgUnReadNumTotal(userId);
  688. mUnReadHandler.post(new Runnable() {
  689. @Override
  690. public void run() {
  691. updateMsgUnReadTv();
  692. }
  693. });
  694. }
  695. private void updateMsgUnReadTv() {
  696. if (mMsgUnReadNum > 0) {
  697. mMsgUnReadTv.setVisibility(View.VISIBLE);
  698. String numStr = mMsgUnReadNum >= 99 ? "99+" : mMsgUnReadNum + "";
  699. mMsgUnReadTv.setText(numStr);
  700. } else {
  701. mMsgUnReadTv.setVisibility(View.INVISIBLE);
  702. }
  703. }
  704. public void exitMucChat(String toUserId) {
  705. if (mCoreService != null) {
  706. mCoreService.exitMucChat(toUserId);
  707. }
  708. }
  709. public void sendNewFriendMessage(String toUserId, NewFriendMessage message) {
  710. if (mBind && mXmppService != null) {
  711. mXmppService.sendNewFriendMessage(toUserId, message);
  712. }
  713. }
  714. /**
  715. * 获得fragment对象
  716. *
  717. * @return
  718. */
  719. public BusinessCircleFragment getBusinessCircleFragment() {
  720. FragmentManager sfmanager = getSupportFragmentManager();
  721. return (BusinessCircleFragment) sfmanager.findFragmentByTag(TAG_BusinessCircle);
  722. }
  723. public void setUnReader(int num) {
  724. mMsgUnReadNum = mMsgUnReadNum - oldERPNum > 0 ? (mMsgUnReadNum - oldERPNum) : 0;
  725. mMsgUnReadNum = mMsgUnReadNum + num;
  726. oldERPNum = num;
  727. updateMsgUnReadTv();
  728. }
  729. }