Notification详解以及点击消除

1.在通知栏生成通知

   // 创建一个NotificationManager的引用
        NotificationManager notificationManager = (NotificationManager)
                ac.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

        // 定义Notification的各种属性
        Notification notification = new Notification(R.drawable.ic_launcher,
                "有新消息", System.currentTimeMillis());
        //FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
        //FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
        //FLAG_ONGOING_EVENT 通知放置在正在运行 6.0系统设置该属性后,无法在通知栏清除该通知
        //FLAG_INSISTENT 是否一直进行,比如音乐一直播放,直到用户响应
        //FLAG_SHOW_LIGHTS 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用

        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        //可以设置多个属性,如下
        //notification.flags |= Notification.FLAG_SHOW_LIGHTS;


        //DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
        //DEFAULT_LIGHTS 使用默认闪光提示
        //DEFAULT_SOUNDS 使用默认提示声音
        //DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission android:name="android.permission.VIBRATE" />权限
        notification.defaults = Notification.DEFAULT_LIGHTS;
        //叠加效果常量
        //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
        notification.ledARGB = Color.BLUE;
        notification.ledOnMS = 5000; //闪光时间,毫秒

        // 设置通知的事件消息
        CharSequence contentTitle = "有新消息"; // 通知栏标题
        CharSequence contentText = "恭喜您,开门成功!"; // 通知栏内容

        //如果需要跳转到指定的Activity,则需要设置PendingIntent
        Intent notificationIntent = new Intent(ac, HostActivity.class);
        //给指定的activity传递通知Id,方便activity消除该通知
        notificationIntent.putExtra("notificationId", 1111);

        // FLAG_UPDATE_CURRENT 更新数据,如果有多个PendingIntent,且requestCode相同,则会 替换为最新extra数据
        //如果需要通过不同的extra数据,进行处理,就需要requestCode不相同
        int requestCode = new Random().nextInt();
        PendingIntent contentItent = PendingIntent.getActivity(ac, requestCode, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);


        notification.setLatestEventInfo(ac, contentTitle, contentText, contentItent);

        // 把Notification传递给NotificationManager
        notificationManager.notify(1111, notification); //将通知加入状态栏,标记为id

2.在Activity中关闭通知

 public void onResume() {

        super.onResume();
 int notificationId = getIntent().getIntExtra("notificationId", 123);
        if (notificationId != 123) {
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            //移除标记为id的通知 (只是针对当前Context下的所有Notification)
            notificationManager.cancel(notificationId); 
            //移除所有通知
            //notificationManager.cancelAll();
        }
   }
    原文作者:逍遥-无忌
    原文地址: https://blog.csdn.net/yy471101598/article/details/53200136
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞