肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > Android O 新特性 — Notification

Android O 新特性 — Notification

时间:2020-06-22 14:55:53

相关推荐

新特性

在Android 8.0中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括:

通知渠道:Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。要了解如何实现通知渠道的信息,请参阅通知渠道指南。通知标志:Android 8.0 引入了对在应用启动器图标上显示通知标志的支持。通知标志可反映某个应用是否存在与其关联、并且用户尚未予以清除也未对其采取行动的通知。通知标志也称为通知点。要了解如何调整通知标志,请参阅通知标志指南。休眠:用户可以将通知置于休眠状态,以便稍后重新显示它。重新显示时通知的重要程度与首次显示时相同。应用可以移除或更新已休眠的通知,但更新休眠的通知并不会使其重新显示。通知超时:现在,使用setTimeoutAfter()创建通知时您可以设置超时。您可以使用此函数指定一个持续时间,超过该持续时间后,通知应取消。如果需要,您可以在指定的超时持续时间之前取消通知。通知设置:当您使用Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCESIntent 从通知创建指向应用通知设置的链接时,您可以调用setSettingsText()来设置要显示的文本。此系统可以提供以下 Extra 数据和 Intent,用于过滤应用必须向用户显示的设置:EXTRA_CHANNEL_IDNOTIFICATION_TAGNOTIFICATION_ID。通知清除:系统现在可区分通知是由用户清除,还是由应用移除。要查看清除通知的方式,您应实现NotificationListenerService类的新onNotificationRemoved()函数。背景颜色:您现在可以设置和启用通知的背景颜色。只能在用户必须一眼就能看到的持续任务的通知中使用此功能。例如,您可以为与驾车路线或正在进行的通话有关的通知设置背景颜色。您还可以使用Notification.Builder.setColor()设置所需的背景颜色。这样做将允许您使用Notification.Builder.setColorized()启用通知的背景颜色设置。消息样式:现在,使用MessagingStyle类的通知可在其折叠形式中显示更多内容。对于与消息有关的通知,您应使用MessagingStyle类。您还可以使用新的addHistoricMessage()函数,通过向与消息相关的通知添加历史消息为会话提供上下文。

创建通知

您可以在NotificationCompat.Builder对象中为通知指定 UI 信息和操作。要创建通知,请调用NotificationCompat.Builder.build(),它将返回包含您的具体规范的Notification对象。要发出通知,请通过调用NotificationManager.notify()Notification对象传递给系统。

必需的通知内容

Notification对象必须包含以下内容:

小图标,由setSmallIcon()设置标题,由setContentTitle()设置详细文本,由setContentText()设置

创建通知/自定义通知渠道

(1)NotificationManager获取

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);复制代码

(2)通知渠道的创建

// Creates an explicit intent for an Activity in your appIntent intent = new Intent(MainActivity.this, Main2Activity.class);TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(MainActivity.this);taskStackBuilder.addParentStack(Main2Activity.class);taskStackBuilder.addNextIntent(intent);// 通过taskStackBuilder对象获取PendingIntentPendingIntent pi = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);String custom_id = "marco_notification";// 自定义通知渠道 idCharSequence name = getString(R.string.channel_name);// 自定义通知渠道 nameString description = getString(R.string.channel_description);// 自定义通知渠道描述int importance = NotificationManager.IMPORTANCE_HIGH; // 自定义通知渠道级别//创建自定义渠道NotificationChannel marco_channel = new NotificationChannel(custom_id, name, importance);// 添加一系列特性marco_channel.setDescription(description);marco_channel.enableLights(true);marco_channel.setLightColor(Color.RED);notificationManager.createNotificationChannel(marco_channel);复制代码

(3)通知的创建、显示

NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this, custom_id) .setContentTitle("This is a Notification") .setContentText("Notification contentText") .setSmallIcon(R.drawable.ic_launcher_background) .setContentIntent(pi);notificationManager.notify(1,notification.build());复制代码

以下为代码截图和通知显示效果:

图1. 创建自定义渠道的Notification代码逻辑

图2. Notification显示截图

通知超时

NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this, custom_id).setContentTitle("This is a Notification").setContentText("Notification contentText").setSmallIcon(R.drawable.ic_launcher_background).setContentIntent(pi)// 设置超时时间,5000 = 5秒,Notification将会消失 .setTimeoutAfter(5000);复制代码

如果觉得《Android O 新特性 — Notification》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。