1.获取通知管理者
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
2.通知的获取
NotificationCompat.Builder(Main2Activity.this)
NotificationCompat 在supper- v4 包下
下面是具体代码:
public class Main2Activity extends Activity implements View.OnClickListener {
private Button btn;
//创建通知管理者
private NotificationManager manager;
//通知
private Notification notification;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btn = findViewById(R.id.btn);
btn.setOnClickListener(this);
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//创建意图
Intent intent =new Intent(Main2Activity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(Main2Activity.this,0, intent,0);
//创建通知
notification =new NotificationCompat.Builder(Main2Activity.this)
.setContentTitle("我是一个通知")
.setContentText("我是通知的文本")
.setWhen(System.currentTimeMillis())//时间
.setSmallIcon(R.mipmap.ic_launcher)//设置小图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))//设置下拉后显示的图标
.setContentIntent(pendingIntent)//设置意图 目的是点击通知打开那个页面
.setAutoCancel(true)//传入true 打开通知后关闭页面
// .setVibrate(new long[]{0, 1000, 1000, 1000}) //设置震动 收到通知0S后震动1S 休息1S 在震动1S
//震动需要添加权限 VIBRATE
.setDefaults(Notification.DEFAULT_ALL)//跟随系统 震动和播放铃声
.setLights(Color.GREEN,1000,100)//设置信号灯的颜色
.build();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn: {
//弹出通知
manager.notify(1,notification);
break;
}
}
}
}
注意 如果需要提示震动,需要在 清单文件中添加权限
另外 点击通知跳转到页面后,关闭页面有两种方式。一是上文提到的,另一种是显式调用NotificationManager的cancel()将他取消。用法就写在你开启的页面 onCreat()中即可。需要注意的一点是 cancel()中传入的值 要跟你创建的通知传入的ID是一致的才能取消掉这个通知。
高级用法:
//设置长文本
setStyle(new NotificationCompat.BigTextStyle().bigText("我就是测试一下长文本的显示是不是可以实现"))
//设置图片的显示
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)))
.setPriority(NotificationCompat.PRIORITY_MAX) //设置通知重要程度