美文网首页
Android notification

Android notification

作者: 緋村劍心 | 来源:发表于2019-02-24 21:39 被阅读0次

    当app需要给用户提示信息,但是该app又没有运行在前台的时候,就可以利用通知

    创建通知

    由Notification.Builder创建一个Notification对象,进行各种属性的配置,其中必须配置的属性如下

    小图标,使用setSamllIcon()方法设置。

    标题,使用setContentTitle()方法设置。

    文本内容,使用setContentText()方法设置。

    /*

    channel的构造函数有三个参数 channel的id,name,和优先级。 创建完channel后通过 NotificationManager的createNotificationChannel(channel)方法添加chanel,并在在notification里设置setChannelId。

    */

    String CHANNEL_ID = "my_channel_01";

    CharSequence name = "my_channel_01";

    String description = "你好世界";

    int importance = NotificationManager.IMPORTANCE_LOW;

    //Android 8.0开始需要为通知设置channel

    NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);

    channel.setDescription(description);

    channel.enableLights(true);

    channel.setLightColor(Color.RED);

    channel.enableVibration(true);

    channel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});

    manager.createNotificationChannel(channel);

    Notification notification = map.get(id);

    if(notification == null) {

        notification = new Notification.Builder(this)

                //设置通知的标题

                .setContentTitle("This is content title")

                // 设置通知的详细信息

                .setContentText(text)

                .setWhen(System.currentTimeMillis())

                .setSmallIcon(R.mipmap.ic_launcher)

                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))

                .setChannelId(CHANNEL_ID)

                .build();

    }

    发送通知

    通知由NotificationManager发送,它是系统级服务,获取方法是(NotificationManager) getSystemService

    (NOTIFICATION_SERVICE),获取到notification对象之后,就可以调用NotificationManager.notify()发送通知

    更新与移除通知

    使用NotificationManager.notify()发送通知的时候,需要传递一个唯一id作为标识符,用于标识这个通知,有时候并不是要无限添加新的通知,而是要更新原有的通知信息,当你发送通知的时候使用的id是一样的话,则会将通知更新为新的notification的内容,而使用cancel(int)来移除一个指定的通知,也可以使用cancelAll()移除所有的通知。

    通过点击通知跳转活动

    如果我们想要用户点击app发出的通知有反应,比如进入进入一个页面,这里就需要用到pendingIntent.

    Intent和PendingIntent的区别,PendingIntent可以看做是对Intent的包装,通过名称可以看出PendingIntent用于处理即将发生的意图,而Intent用来用来处理马上发生的意图。而对于通知来说,它是一系统级的全局通知,并不确定这个意图被执行的时间。当在应用外部执行PendingIntent时,因为它保存了触发应用的Context,使得外部应用可以如在当前应用中一样,执行PendingIntent里的Intent,就算执行的时候响应通知的应用已经被销毁了,也可以通过存在PendingIntent里的Context照常执行它,并且还可以处理Intent所带来的额外信息。

    //设置pendingIntent让用户点击通知时跳转活动。

                    Intent intent = new Intent(this,NotificationActivity.class);

                    PendingIntent pi = PendingIntent.getActivity(this,0 ,intent ,0 );

    其中第四个参数是用于标识PendingIntent的构造选择

    * FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。

    * FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。

    * FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。

    * FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用

    其它Notification设置

    设置当用户点击完通知操作后,通知图标就消失:.setAutoCancel(true)

    设置通知展开的长文本内容:setStyle(new Notification.BigTextStyle().bigText("文本内容"))

    相关文章

      网友评论

          本文标题:Android notification

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