NotificationManage是Android中的一个系统服务组件。
可将通知对象发送到系统ActionBar上。
该组件的主要作用是通知用户事件的发生,方法主要有三种:
在状态栏中出现一个图标
设备LED灯闪烁
播放音乐或者是振动
Android提供NotificationManager组件,负责与system_server进行交互
NotificationManager notification=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);//android提供Android服务的代码。
Notification常用的方法:
//取消之前显示的一个通知
public void cancel(int id)
//取消之前显示的所有通知
public void cancelAll()
//将通知发送到状态栏上
public void notify(int id, Notification notification)(id代表识别符)
manager.notify(1, notification);
Notification设置服务的代码:
Notification notification=new Notification.Builder ( MainActivity.this).setContentIntent ( pendingIntent ).setContentTitle ("放假通知" ).setContentText ("明天不用上课" ).setWhen ( System.currentTimeMillis () ).setSmallIcon ( R.mipmap.ic_launcher ).build ();
manager.notify (1,notification );
通知 查看的实现通过PendingIntent来实现:
Intent 是意图的意思。Android 中的 Intent 正是取自这个意思,它是一个消息对象,通过它,Android 系统的四大组件能够方便的通信,并且保证解耦。
Intent 可以说明某种意图,携带一种行为和相应的数据,发送到目标组件。
PendingIntent是对Intent的封装,但它不是立刻执行某个行为,而是满足某些条件或触发某些事件后才执行指定的行为(关于PendingIntent的使用场景主要用于闹钟、通知、桌面部件).
关于PendingIntent的实例获取一般有以下五种方法,分别对应Activity、Broadcast、Service
getActivity()
getActivities()
getBroadcast()
getService()
getForegroundService()
它们的参数都相同,都是四个:Context, requestCode, Intent, flags,分别对应上下文对象、请求码、请求意图用以指明启动类及数据传递、关键标志位
接下来上我自身的源代码:
package com.mingrisoft.notification;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivityextends AppCompatActivityimplements View.OnClickListener {
private Notification notification;
private Button mSent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_main );
initView ();
}
private void initView() {
mSent = (Button) findViewById ( R.id.sent );
mSent.setOnClickListener (this );
}
@Override
public void onClick(View v) {
switch (v.getId ()) {
case R.id.sent:
Intent intent=new Intent ( MainActivity.this,NotificationMainActivity.class );
PendingIntent pendingIntent=PendingIntent.getActivity ( MainActivity.this,0,intent,0 );
NotificationManager manager=(NotificationManager)getSystemService (NOTIFICATION_SERVICE );
Notification notification=new Notification.Builder ( MainActivity.this).setContentIntent ( pendingIntent ).setContentTitle ("放假通知" ).setContentText ("明天不用上课" ).setWhen ( System.currentTimeMillis () ).setSmallIcon ( R.mipmap.ic_launcher ).build ();
//设置Builder的构造器,通知标题,通知内容,通知时间,通知大小图标。
manager.notify (1,notification );
break;
default:
break;
}
}
}
在一个button中实现Intent意图,设置Notification服务(需要设置Notification的构造器,通知标题,通知内容,通知图标)与其NotificationManager组件
再创建NotificationMainActivity,设置Notification的服务,并设置取消前一个通知的功能
package com.mingrisoft.notification;
import android.app.NotificationManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class NotificationMainActivityextends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_notification_main );
NotificationManager manager=(NotificationManager)getSystemService (NOTIFICATION_SERVICE );
manager.cancel (1 );//设置取消之前显示的通知
}
}
运行结果展示图: