文章目录
什么是通知
通知是 Android 中 Service 与用户交互的一种方式(主要是 Service )
如何发送一个简单通知?
1、获取 NotificationManager 通知管理器
2、构建 Notification 对象:
使用 Notification.Builder 构建器构建对象
Builder builder = new Builder();
builder.setXXX().setXXX().build();
3、调用 manager.notify() 方法发送该通知
一个发送通知的栗子:
private static final int NOTIFICATION_ID = 1001;
private void sendNotification() {
//1、NotificationManager
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
/** 2、Builder->Notification
* 必要属性有三项
* 小图标,通过 setSmallIcon() 方法设置
* 标题,通过 setContentTitle() 方法设置
* 内容,通过 setContentText() 方法设置*/
Notification.Builder builder = new Notification.Builder(this);
builder.setContentInfo("Content info")
.setContentText("Content text")//设置通知内容
.setContentTitle("Content title")//设置通知标题
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
.setSmallIcon(R.mipmap.ic_launcher_round)//不能缺少的一个属性
.setSubText("Subtext")
.setTicker("滚动消息......")
.setWhen(System.currentTimeMillis());//设置通知时间,默认为系统发出通知的时间,通常不用设置
Notification n = builder.build();
//3、manager.notify()
manager.notify(NOTIFICATION_ID,n);
}
运行在API22的手机上效果:
Android 8.0不能弹出通知
运行在API26的手机上怎么样呢…原来根本就不能弹出通知,填坑请戳下文:
Notification Android8.0中无法发送通知,提示:No Channel found for pkg
一个兼容8.0的栗子
private static final int NOTIFICATION_ID = 1001;
private void sendNotification() {
//1、NotificationManager
NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
/** 2、Builder->Notification
* 必要属性有三项
* 小图标,通过 setSmallIcon() 方法设置
* 标题,通过 setContentTitle() 方法设置
* 内容,通过 setContentText() 方法设置*/
Notification.Builder builder = new Notification.Builder(this);
builder.setContentInfo("Content info")
.setContentText("Content text")//设置通知内容
.setContentTitle("Content title")//设置通知标题
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
.setSmallIcon(R.mipmap.ic_launcher_round)//不能缺少的一个属性
.setSubText("Subtext")
.setTicker("滚动消息......")
.setWhen(System.currentTimeMillis());//设置通知时间,默认为系统发出通知的时间,通常不用设置
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("001","my_channel",NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(true