Пример #1
0
 @Override
 protected void initBroadcastReceiver() {
   super.initBroadcastReceiver();
   broadcastReceiver =
       new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, final Intent intent) {
           switch (intent.getAction()) {
             case GLOBAL_MESSAGE_ACTION:
               Log.d(TAG, "Receive global message");
               if (intent.hasExtra(EXTRA_MESSAGE)) {
                 ChatData chatData = intent.getParcelableExtra(EXTRA_MESSAGE);
                 chatAdapter.add(chatData);
               } else if (intent.hasExtra(EXTRA_MESSAGE_BUNDLE)) {
                 Parcelable[] parcelables = intent.getParcelableArrayExtra(EXTRA_MESSAGE_BUNDLE);
                 ChatData[] messages =
                     Arrays.copyOf(parcelables, parcelables.length, ChatData[].class);
                 for (ChatData chatData : messages) {
                   chatAdapter.add(chatData);
                 }
               }
               break;
             case PEOPLE_ACTION:
               PeopleData peopleData = intent.getParcelableExtra(EXTRA_PEOPLE);
               if (peopleData.getEncodedProfilePicture() != null
                   && peopleData.getEncodedProfilePicture().length() > 0)
                 peopleData.setProfilePicture(
                     Base64Converter.getBitmapFromString(peopleData.getEncodedProfilePicture()));
               if (!peopleData.getUid().equals(Utils.getAndroidID(getApplicationContext())))
                 switch (peopleData.getAction()) {
                   case CONNECT:
                     peopleAdapter.add(peopleData);
                     break;
                   case DISCONNECT:
                     peopleAdapter.setOffline(peopleData);
                     break;
                   case CHANGE_PROFILE:
                     peopleAdapter.add(peopleData);
                     break;
                   default:
                     Log.w(getClass().getSimpleName(), "Unexpected action type");
                 }
               break;
             case SEND_ROOM_ACTION:
               Log.d(TAG, "SEND_ROOM_ACTION");
               if (intent.hasExtra(EXTRA_ROOM)) {
                 RoomData roomData = intent.getParcelableExtra(EXTRA_ROOM);
                 roomsAdapter.add(roomData);
               } else if (intent.hasExtra(EXTRA_MESSAGE_BUNDLE)) {
                 Parcelable[] parcelables = intent.getParcelableArrayExtra(EXTRA_MESSAGE_BUNDLE);
                 RoomData[] messages =
                     Arrays.copyOf(parcelables, parcelables.length, RoomData[].class);
                 for (RoomData roomData : messages) {
                   roomsAdapter.add(roomData);
                 }
               }
               break;
             case SET_ALL_OFFLINE_ACTION:
               peopleAdapter.allOffline();
           }
         }
       };
   IntentFilter intentFilter = new IntentFilter();
   intentFilter.addAction(GLOBAL_MESSAGE_ACTION);
   intentFilter.addAction(PEOPLE_ACTION);
   intentFilter.addAction(SET_ALL_OFFLINE_ACTION);
   intentFilter.addAction(SEND_ROOM_ACTION);
   registerReceiver(broadcastReceiver, intentFilter);
 }