主要部分:
NotificationManager类:通知栏管理,通过该类才能发送通知.
NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);//获取状态通知栏管理
mNotificationManager.notify(id,NotificationCompat.Builder的一个实例);//发送通知
mNotificationManager.cancel(id)//撤销该通知
NotificationCompat.Builder类:
NotificationCompat.Buider mNotificationBuilder= new NotificationCompat.Builder(context,“default”);//实例化
mNotificationBuilder.setContentTitle(“通知栏标题”)
.setContentText(“通知栏内容:”)
.setContentIntent(contentIntent)
//点击通知栏消息后跳转.
.setDefaults(Notification.DEFAULT_VIBRATE)
.setTicker(“通知来了”)
//目前不知道有什么用处
.setWhen(System.currentTimeMillis())
//目前不知道有什么用处
.setSmallIcon(R.mipmap.ic_launcher)
//这条语句必须有,否则没有通知显示. .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
.setAutoCancel(true)
为 .setContentIntent(contentIntent)做准备:
Intent intent = new Intent(MainAcitivity.this,MainActivity.this)
PendingIntent contentIntent = PendingIntent.getActivity(
MainActivity.this,0,notificationIntent,0)
下面是一个简单例子.
activity_main.xml中设置两个按钮,发送通知和撤销通知.
MainActivity.java:
public class MainActivity extends AppCompatActivity {
NotificationManager mNotificationManager;
NotificationCompat.Builder mNotificationBuilder;
Button btn_start,btn_cancle;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=MainActivity.this;
btn_start = (Button)findViewById(R.id.startBtn);
btn_cancle = (Button)findViewById(R.id.cancelBtn);
//第一步:获取状态通知栏管理:
//注意:NotificationManager 是一个系统Service
mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//第二步:实例化通知栏构造器NotificationCompat.Builder:并对Builder进行配置:
mNotificationBuilder=new NotificationCompat.Builder(context,"default");
Intent notificationIntent=new Intent(context, MainActivity.class);
PendingIntent contentIntent=PendingIntent.getActivity(context, 0, notificationIntent, 0);
mNotificationBuilder.setContentTitle("通知栏标题")
.setContentText("通知栏内容:")
.setContentIntent(contentIntent)
.setDefaults(Notification.DEFAULT_VIBRATE)
.setTicker("通知来了")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
.setAutoCancel(true);
//第三步:发送通知请求
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNotificationManager.notify(1,mNotificationBuilder.build());//第一个参数为ID
}
});
// 取消通知
btn_cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNotificationManager.cancel(1);
}
});
}
}
运行结果