MainActivity.java 42 KB

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