Notifaction

package com.example.mbenben.newstudy;
        import android.app.Activity;
        import android.app.Notification;
        import android.app.NotificationManager;
        import android.app.PendingIntent;
        import android.content.Context;
        import android.content.Intent;
        import android.os.Bundle;
        import android.support.v4.app.NotificationCompat;
        import android.view.View;
public class MainActivityextends Activity  {
    private NotificationManagernotificationManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.click).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showNotifaction();
            }
        });
        findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                cancelNotifacation();
            }
        });
    }
    private void showNotifaction(){
        NotificationCompat.Builder builder =new NotificationCompat.Builder(this);
        builder.setTicker("通知栏提示");
        builder.setSmallIcon(R.mipmap.ic_launcher);//设置通知 栏小图标
        builder.setContentTitle("通知栏标题");//标题
        builder.setContentText("通知栏内容");//内容
        builder.setWhen(System.currentTimeMillis());//设置时间 这里设置的系统默认时间
//        设置以下三个需要对应权限
//        builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示音
//        builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
//        builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
        builder.setDefaults(Notification.DEFAULT_ALL);//提示音,指示灯,震动同样需要3种对应权限
//      设置通知点击事件PendingIntent
        Intent intent =new Intent();
//        PendingIntent.getActivity(上下文对象, 请求码, intent, 0)
//        第一个参数连接上下文的context
//        第二个参数是对PendingIntent的描述,请求值不同Intent就不同
//        第三个参数是一个Intent对象,包含跳转目标
//                第四个参数有4种状态
//        FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。
//        FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。
//        FLAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send()方法的话,系统将会返回一个SendIntentException。
//        FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        builder.setContentIntent(pendingIntent);
        Notification build = builder.build();//4.1以上
//        拿到通知控制类
        notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//      发送通知 notificationManager.notify(自定义一个ID,Notification);
        notificationManager.notify(1,build);
    }
    private void cancelNotifacation(){
//        停止通知 通知的ID
        notificationManager.cancel(1);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_34137799/article/details/90963837