在网上看到一篇非常棒的博客http://www.cnblogs.com/travellife/p/Android-Notification-xiang-jie.html,看完就知道notification的功能和如何使用。
在原基础上增加了显示字数限制和未读消息条数提醒:
最基础的通知代码:
private int messageNum=0;
private void sendNotification(String s) {
messageNum++;
System.out.println("进入notification");
//当字符数大于20
if (s.length()>20){
s = s.substring(0,20)+"...";
System.out.println(s);
}
//获取NotificationManager实例
NotificationManager notifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//实例化NotificationCompat.Builde并设置相关属性
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
//设置小图标和内容
builder.setSmallIcon(R.mipmap.ic_launcher).setContentTitle("WeChat消息");
if(messageNum>1){
builder.setContentText("有"+messageNum+"条未读信息");
}else{
builder.setContentText(s);
//设置通知时间,默认为系统发出通知的时间,通常不用设置
//.setWhen(System.currentTimeMillis());
//通过builder.build()方法生成Notification对象,并发送通知,id=1
}
notifyManager.notify(1, builder.build());
}
- 关于 setSmallIcon() 与 setLargeIcon()。在 NotificationCompat.Builder 中有设置通知的大小图标的两个方法。这两个方法有什么区别呢?当 setSmallIcon() 与 setLargeIcon() 同时存在时, smallIcon 显示在通知的右下角, largeIcon 显示在左侧;当只设置 setSmallIcon() 时, smallIcon 显示在左侧。看下图你就明白了。对于部分 ROM ,可能修改过源码,如 MIUI 上通知的大图标和小图标是没有区别的。

实现一个点击 Notification 跳转到 MainActivity 的效果:
public void sendNotification() {
messageNum++;
System.out.println("进入notification");
if (s.length()>20){
s = s.substring(0,20)+"...";
System.out.println(s);
}
NotificationManager notifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
//获取PendingIntent
Intent mainIntent = new Intent(context, MainActivity.class);
PendingIntent mainPendingIntent = PendingIntent.getActivity(context, 0, mainIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//创建 Notification.Builder 对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
if(messageNum>1){
builder.setContentText("有"+messageNum+"条未读信息");
}else{
builder.setContentText(s);
//设置通知时间,默认为系统发出通知的时间,通常不用设置
//.setWhen(System.currentTimeMillis());
//通过builder.build()方法生成Notification对象,并发送通知,id=1
}
builder.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true) //点击通知后自动清除
.setContentTitle("WeChat消息")
.setContentIntent(mainPendingIntent);
//发送通知
notifyManager.notify(3, builder.build());
GitPages: http://www.littlejie.com/