/** * 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.easemob.chatuidemo.activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NotificationCompat; import android.view.View; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMMessage; import com.easemob.chat.EMMessage.Type; import com.easemob.chatuidemo.utils.CommonUtils; import com.easemob.util.EasyUtils; import com.quark.utils.WaitDialog; import com.umeng.analytics.MobclickAgent; public class BaseActivity extends FragmentActivity { private static final int notifiId = 11; protected NotificationManager notificationManager; protected WaitDialog dialog; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); } @Override protected void onResume() { super.onResume(); // onresume时,取消notification显示 EMChatManager.getInstance().activityResumed(); // umeng MobclickAgent.onResume(this); } @Override protected void onStart() { super.onStart(); // umeng MobclickAgent.onPause(this); } /** * 当应用在前台时,如果当前消息不是属于当前会话,在状态栏提示一下 * 如果不需要,注释掉即可 * @param message */ protected void notifyNewMessage(EMMessage message) { //如果是设置了不提醒只显示数目的群组(这个是app里保存这个数据的,demo里不做判断) //以及设置了setShowNotificationInbackgroup:false(设为false后,后台时sdk也发送广播) if(!EasyUtils.isAppRunningForeground(this)){ return; } NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(getApplicationInfo().icon) .setWhen(System.currentTimeMillis()).setAutoCancel(true); String ticker = CommonUtils.getMessageDigest(message, this); if(message.getType() == Type.TXT) ticker = ticker.replaceAll("\\[.{2,3}\\]", "[表情]"); //设置状态栏提示 // mBuilder.setTicker(message.getFrom()+": " + ticker); mBuilder.setTicker(ticker); //必须设置pendingintent,否则在2.3的机器上会有bug Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, notifiId, intent, PendingIntent.FLAG_ONE_SHOT); mBuilder.setContentIntent(pendingIntent); Notification notification = mBuilder.build(); notificationManager.notify(notifiId, notification); notificationManager.cancel(notifiId); } public void showWait(boolean isShow) { if (isShow) { if (null == dialog) { dialog = new WaitDialog(this); } dialog.show(); } else { if (null != dialog) { dialog.dismiss(); } } } /** * 返回 * * @param view */ public void back(View view) { finish(); } }