|
1 | 1 | package com.mean.meanchateasemobapi;
|
2 | 2 |
|
| 3 | +import android.app.Activity; |
| 4 | +import android.app.NotificationChannel; |
| 5 | +import android.app.NotificationManager; |
| 6 | +import android.app.PendingIntent; |
| 7 | +import android.app.TaskStackBuilder; |
| 8 | +import android.content.Context; |
3 | 9 | import android.content.DialogInterface;
|
4 | 10 | import android.content.Intent;
|
5 | 11 | import android.content.IntentFilter;
|
6 | 12 | import android.content.pm.PackageManager;
|
7 | 13 | import android.net.Uri;
|
| 14 | +import android.os.Build; |
8 | 15 | import android.os.Bundle;
|
9 | 16 | import android.os.Handler;
|
10 | 17 | import android.support.annotation.NonNull;
|
|
13 | 20 | import android.support.v4.app.Fragment;
|
14 | 21 | import android.support.v4.app.FragmentActivity;
|
15 | 22 | import android.support.v4.app.FragmentTransaction;
|
| 23 | +import android.support.v4.app.NotificationCompat; |
16 | 24 | import android.support.v7.app.AlertDialog;
|
17 | 25 | import android.util.Log;
|
18 | 26 | import android.view.ContextMenu;
|
|
28 | 36 | import com.hyphenate.EMError;
|
29 | 37 | import com.hyphenate.EMMessageListener;
|
30 | 38 | import com.hyphenate.chat.EMClient;
|
| 39 | +import com.hyphenate.chat.EMImageMessageBody; |
31 | 40 | import com.hyphenate.chat.EMMessage;
|
| 41 | +import com.hyphenate.chat.EMMessageBody; |
| 42 | +import com.hyphenate.chat.EMTextMessageBody; |
| 43 | +import com.hyphenate.chat.EMVoiceMessageBody; |
32 | 44 | import com.hyphenate.easeui.domain.EaseUser;
|
33 | 45 | import com.hyphenate.easeui.widget.EaseTitleBar;
|
34 | 46 | import com.hyphenate.util.NetUtils;
|
@@ -337,7 +349,47 @@ public void run() {
|
337 | 349 | class MyMessageListener implements EMMessageListener{
|
338 | 350 | @Override
|
339 | 351 | public void onMessageReceived(List<EMMessage> messages) {
|
340 |
| - chatFragment.refreshChatListFromServer(chatSizeIgnoreSort); |
| 352 | + Activity currentActivity = ((AppApplication)AppApplication.instance).getCurrentActivity(); |
| 353 | + if( (currentActivity instanceof MainActivity && currentFragment == 0) || currentActivity instanceof ChatActivity){ |
| 354 | + chatFragment.refreshChatListFromServer(chatSizeIgnoreSort); |
| 355 | + }else { |
| 356 | + if(messages.size()==0){ |
| 357 | + return; |
| 358 | + } |
| 359 | + EMMessage message = messages.get(0); |
| 360 | + EMMessageBody messageBody = message.getBody(); |
| 361 | + String messageBodyString; |
| 362 | + if(messageBody instanceof EMTextMessageBody){ |
| 363 | + messageBodyString = ((EMTextMessageBody) messageBody).getMessage(); |
| 364 | + }else if(messageBody instanceof EMVoiceMessageBody){ |
| 365 | + messageBodyString = "[语音]"; |
| 366 | + }else if(messageBody instanceof EMImageMessageBody){ |
| 367 | + messageBodyString = "[图片]"; |
| 368 | + }else{ |
| 369 | + messageBodyString = "[未知类型的消息]"; |
| 370 | + } |
| 371 | + int requestCode = 0; |
| 372 | + int flags = PendingIntent.FLAG_UPDATE_CURRENT; |
| 373 | + int id = 1; |
| 374 | + Intent resultIntent = new Intent(MainActivity.this, ChatActivity.class); |
| 375 | + resultIntent.putExtra("username",message.getFrom()); |
| 376 | + TaskStackBuilder stackBuilder = TaskStackBuilder.create(MainActivity.this); |
| 377 | + stackBuilder.addParentStack(ChatActivity.class); |
| 378 | + stackBuilder.addNextIntent(resultIntent); |
| 379 | + PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(requestCode, flags); |
| 380 | + NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()) |
| 381 | + .setSmallIcon(R.drawable.ic_launcher) |
| 382 | + .setContentTitle(message.getFrom()) |
| 383 | + .setContentText(messageBodyString) |
| 384 | + .setContentIntent(resultPendingIntent) |
| 385 | + .setAutoCancel(true); |
| 386 | + NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); |
| 387 | + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { |
| 388 | + mNotificationManager.createNotificationChannel(AppApplication.getNotificationChannel()); |
| 389 | + builder.setChannelId(AppApplication.getNotificationChannel().getId()); |
| 390 | + } |
| 391 | + mNotificationManager.notify(id, builder.build()); |
| 392 | + } |
341 | 393 | }
|
342 | 394 |
|
343 | 395 | @Override
|
|
0 commit comments