Notifaction

作者: CQ_TYL | 来源:发表于2019-06-03 11:57 被阅读0次
    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);
        }
    }
    

    相关文章

      网友评论

        本文标题:Notifaction

        本文链接:https://www.haomeiwen.com/subject/itqcxctx.html