package com.netease.nim.demo.mixpush; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import com.netease.nim.demo.DemoCache; import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nimlib.sdk.NimIntent; import com.netease.nimlib.sdk.StatusBarNotificationConfig; import com.netease.nimlib.sdk.mixpush.MixPushMessageHandler; import com.netease.nimlib.sdk.msg.MessageBuilder; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; import java.util.ArrayList; import java.util.Map; /** * Created by hzchenkang on 2016/11/10. */ public class DemoMixPushMessageHandler implements MixPushMessageHandler { @Override public boolean onNotificationClicked(Context context, Map<String, String> payload) { LogUtil.i(DemoMixPushMessageHandler.class.getSimpleName(), "rev miPushMessage payload " + payload); String sessionId = payload.get("sessionID"); String type = payload.get("sessionType"); // if (sessionId != null && type != null) { int typeValue = Integer.valueOf(type); ArrayList<IMMessage> imMessages = new ArrayList<>(); IMMessage imMessage = MessageBuilder.createEmptyMessage(sessionId, SessionTypeEnum.typeOfValue(typeValue), 0); imMessages.add(imMessage); Intent notifyIntent = new Intent(); notifyIntent.setComponent(initLaunchComponent(context)); notifyIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); notifyIntent.setAction(Intent.ACTION_VIEW); notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // 必须 notifyIntent.putExtra(NimIntent.EXTRA_NOTIFY_CONTENT, imMessages); context.startActivity(notifyIntent); return true; } else { return false; } } private ComponentName initLaunchComponent(Context context) { ComponentName launchComponent; StatusBarNotificationConfig config = DemoCache.getNotificationConfig(); Class<? extends Activity> entrance = config.notificationEntrance; if (entrance == null) { launchComponent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()).getComponent(); } else { launchComponent = new ComponentName(context, entrance); } return launchComponent; } }