Java tutorial
/** * Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.wenwen.chatuidemo.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.easemob.chat.CmdMessageBody; import com.easemob.chat.EMChat; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMConversation; import com.easemob.chat.EMMessage; import com.easemob.chat.EMMessage.ChatType; import com.easemob.util.EMLog; import com.umeng.analytics.MobclickAgent; import com.umeng.update.UmengUpdateAgent; import com.wenwen.chatui.debug.DebugLog; import com.wenwen.chatuidemo.DemoApplication; import com.wenwen.chatuidemo.R; public class MainActivity extends BaseActivity { protected static final String TAG = "MainActivity"; private Button[] mTabs; private ContactlistFragment contactListFragment; private ContactSickFragment contactSickFragment; // private ChatHistoryFragment chatHistoryFragment; private NewFragment newFragment; private HomeFragment homeFragment; private PersonFragment settingFragment; private Fragment[] fragments; private int index; // ?fragmentindex private int currentTabIndex; // ? public boolean isConflict = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null && savedInstanceState.getBoolean("isConflict", false)) { // T??home???appcrash // fragment?? finish(); startActivity(new Intent(this, LoginActivity.class)); return; } setContentView(R.layout.activity_main); initView(); UmengUpdateAgent.update(this); // wifi?? MobclickAgent.setDebugMode(true); MobclickAgent.updateOnlineConfig(this); homeFragment = new HomeFragment(); newFragment = new NewFragment(); contactSickFragment = new ContactSickFragment(); contactListFragment = new ContactlistFragment(); settingFragment = new PersonFragment(); fragments = new Fragment[] { homeFragment, contactListFragment, contactSickFragment, newFragment, settingFragment }; // fragment getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, homeFragment).show(homeFragment) .commit(); // ack?BroadcastReceiver IntentFilter ackMessageIntentFilter = new IntentFilter( EMChatManager.getInstance().getAckMessageBroadcastAction()); ackMessageIntentFilter.setPriority(3); registerReceiver(ackMessageReceiver, ackMessageIntentFilter); // ??BroadcastReceiver IntentFilter cmdMessageIntentFilter = new IntentFilter( EMChatManager.getInstance().getCmdMessageBroadcastAction()); cmdMessageIntentFilter.setPriority(3); registerReceiver(cmdMessageReceiver, cmdMessageIntentFilter); // sdkUI ??receiverlistener, ??broadcast EMChat.getInstance().setAppInited(); } /** * ? */ private void initView() { // unreadAddressLable = (TextView) // findViewById(R.id.unread_address_number); mTabs = new Button[5]; mTabs[0] = (Button) findViewById(R.id.btn_home); mTabs[1] = (Button) findViewById(R.id.btn_address_list); mTabs[2] = (Button) findViewById(R.id.btn_sick_list); mTabs[3] = (Button) findViewById(R.id.btn_conversation); mTabs[4] = (Button) findViewById(R.id.btn_setting); // tab? mTabs[0].setSelected(true); } /** * button * @param view */ public void onTabClicked(View view) { switch (view.getId()) { case R.id.btn_home: index = 0; break; case R.id.btn_conversation: index = 3; break; case R.id.btn_sick_list: index = 2; break; case R.id.btn_address_list: index = 1; break; case R.id.btn_setting: index = 4; break; } if (currentTabIndex != index) { FragmentTransaction trx = getSupportFragmentManager().beginTransaction(); trx.hide(fragments[currentTabIndex]); if (!fragments[index].isAdded()) { trx.add(R.id.fragment_container, fragments[index]); } trx.show(fragments[index]).commit(); } mTabs[currentTabIndex].setSelected(false); // ?tab? mTabs[index].setSelected(true); currentTabIndex = index; } @Override protected void onDestroy() { super.onDestroy(); try { unregisterReceiver(ackMessageReceiver); } catch (Exception e) { } if (conflictBuilder != null) { conflictBuilder.create().dismiss(); conflictBuilder = null; } } /** * ?BroadcastReceiver */ private BroadcastReceiver ackMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { abortBroadcast(); String msgid = intent.getStringExtra("msgid"); String from = intent.getStringExtra("from"); DebugLog.i(TAG, "?"); DebugLog.i(TAG, from); DebugLog.i(TAG, msgid); EMConversation conversation = EMChatManager.getInstance().getConversation(from); if (conversation != null) { // message EMMessage msg = conversation.getMessage(msgid); if (msg != null) { // 2014-11-5 ????????bug if (ChatActivity.activityInstance != null) { if (msg.getChatType() == ChatType.Chat) { if (from.equals(ChatActivity.activityInstance.getToChatUsername())) return; } } msg.isAcked = true; } } } }; /** * ??BroadcastReceiver */ private BroadcastReceiver cmdMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { abortBroadcast(); EMLog.d(TAG, "??"); // ?cmd message String msgId = intent.getStringExtra("msgid"); EMMessage message = intent.getParcelableExtra("message"); // ??body CmdMessageBody cmdMsgBody = (CmdMessageBody) message.getBody(); String action = cmdMsgBody.action;// ?action // ? ? // message.getStringAttribute(""); EMLog.d(TAG, String.format("??action:%s,message:%s", action, message.toString())); Toast.makeText(MainActivity.this, "?action" + action, Toast.LENGTH_SHORT).show(); } }; /** * ? */ public void updateUnreadLabel() { int count = getUnreadMsgCountTotal(); } @Override protected void onResume() { updateUnreadLabel(); EMChatManager.getInstance().activityResumed(); super.onResume(); } public int getUnreadMsgCountTotal() { int unreadMsgCountTotal = 0; unreadMsgCountTotal = EMChatManager.getInstance().getUnreadMsgsCount(); DebugLog.i(TAG, "" + unreadMsgCountTotal); return unreadMsgCountTotal; } @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean("isConflict", isConflict); super.onSaveInstanceState(outState); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(false); return true; } return super.onKeyDown(keyCode, event); } private android.app.AlertDialog.Builder conflictBuilder; private boolean isConflictDialogShow; /** * ??dialog */ private void showConflictDialog() { isConflictDialogShow = true; DemoApplication.getInstance().logout(null); if (!MainActivity.this.isFinishing()) { // clear up global variables try { if (conflictBuilder == null) conflictBuilder = new android.app.AlertDialog.Builder(MainActivity.this); conflictBuilder.setTitle(""); conflictBuilder.setMessage(R.string.connect_conflict); conflictBuilder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); conflictBuilder = null; finish(); startActivity(new Intent(MainActivity.this, LoginActivity.class)); } }); conflictBuilder.setCancelable(false); conflictBuilder.create().show(); isConflict = true; } catch (Exception e) { } } } }