在做随缘吧的过程中,当用户收到有缘人发过来的消息时,如果随缘app没有在前台打开,需要提醒用户有新的消息。这个如何实现呢?
首先,需要判断当前app是否在后台运行,代码如下:
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List
if (appProcesses.size() > 0) {
RunningAppProcessInfo appProcess = appProcesses.get(0); // 判断第一个是不是自己的应用就可以了
if (appProcess.processName.equals(context.getPackageName())) {
Log.i("前台", appProcess.processName);
return false;
} else {
Log.i("后台", appProcess.processName);
return true;
}
}
return false;
}
然后,在通知栏显示提示内容:
private void addNotificaction(Context context, String title, String message) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
mBuilder.setContentTitle(title).setContentText(message)
.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL, context)) // 设置通知栏点击意图
.setTicker("来自随缘吧www.suiyuan521.com的缘分") // 通知首次出现在通知栏,带上升动画效果的
.setWhen(System.currentTimeMillis())// 通知产生的时间,会在通知信息里显示,一般是系统获取到的时间
.setPriority(Notification.PRIORITY_DEFAULT) // 设置该通知优先级
.setAutoCancel(true)// 设置这个标志当用户单击面板就可以让通知将自动取消
.setOngoing(false)// ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
.setDefaults(Notification.DEFAULT_VIBRATE)// 向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
// Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission
.setSmallIcon(R.drawable.ic_launcher);// 设置通知小ICON
mBuilder.setAutoCancel(true).setContentTitle(title).setContentText(message).setTicker("来自随缘吧www.suiyuan521.com的缘分");
Intent resultIntent = new Intent(context, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent);
mNotificationManager.notify(100, mBuilder.build());
}