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 使用默认手机震动,需加上权限
        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();
        }
   }

你可能感兴趣的:(Android知识点)