通知notification是Android中一个很有特色的功能,当某一个app希望向用户通知一些信息,并且该信息并没有在前台运行,就可以使用通知功能实现。
Android—Notification
通知基本用法
不管是在哪里创建的通知,整体步骤大体相同,下面介绍创建通知的具体步骤;
- 首先创建一个
NotificationManager
来对通知进行管理,可以调用Context的getSystemService
方法获取。 getSystemService
方法接受字符串确定获取系统的某个服务,传入**getSystemService(NOTIFICATION_SERVICE);**即可。
实例代码如下:
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- 接下来创建一个
Notification
对象。存储通知所需要的各种信息,利用其有参构造函数实现创建。
Notification有参构造包含三个接受参数:
- 第一个指定通知图标,一般是drawable资源目录。
- 第二个参数指定通知
ticker内容
,通知刚被创建时,会在系统状态栏一闪而过,一种瞬态信息。 - 第三个参数指定通知被创建的时间,毫秒ms为单位。
给出实例代码:
Notification.Builder builder1 = new Notification.Builder(MainActivity.this);
//设置图标
builder1.setSmallIcon(R.drawable.ic_launcher_background);
builder1.setTicker("显示第1个通知");
//设置标题
builder1.setContentTitle("通知");
//消息内容
builder1.setContentText("点击查看详细内容");
//发送时间
builder1.setWhen(System.currentTimeMillis());
创建好通知notification对象之后,需要对通知布局设定,调用Notification
的setLatestEventInfo方法可以给通知设定一个标准布局,该方法接受4个参数:
- 第一个参数Context。
- 第二个参数指定通知标题内容。
- 第三个参数指定通知正文内容。
- 第四个参数暂时填null都行。
实例代码:
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
otification.Builder builder1 = new Notification.Builder(MainActivity.this);
//设置图标
builder1.setSmallIcon(R.drawable.ic_launcher_background);
builder1.setTicker("显示第1个通知");
//设置标题
builder1.setContentTitle("通知");
//消息内容
builder1.setContentText("点击查看详细内容");
//发送时间
builder1.setWhen(System.currentTimeMillis());
//设置默认的提示音,振动方式,灯光
builder1.setDefaults(Notification.DEFAULT_ALL);
//打开程序后图标消失
builder1.setAutoCancel(true);
PendingIntent通知意图
PendingIntent 从名字上看起来就和 Intent 有些类似,它们之间也确实存在着不少共同点。比如它们都可以去指明某一个“意图”,都可以用于启动活动、启动服务以及发送广播等。不同的是,Intent 更加倾向于去立即执行某个动作,而 PendingIntent 更加倾向于在某个合适的时机去执行某个动作。所以, 也可以把 PendingIntent 简单地理解为延迟执行的 Intent。
PendingIntent用法使用一样简单,提供了几个静态方法用于获取PendingIntent的实例,根据需求选择使用getActivity
方法、getBroadcast
方法、或者是getService
方法。
上述几个方法所利用的参数一致:
- 第一个仍然是Context。
- 第二个一般用不到,传入null即可。
- 第三个是Intent意图对象,根据该对象构建PendingIntent意图。
给出实例代码:
Intent intent = new Intent(MainActivity.this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
builder1.setContentIntent(pendingIntent);
Notification notification1 = builder1.build();
// 通过通知管理器发送通知
notificationManager.notify(1, notification1);
运行截图
平台:夜神模拟器
完整代码
请见gitee仓库链接:notification。