跳转到相应内容

最常访问

最近访问

navigation

通知样式

Android Wear 支持通知样式以提升穿戴式设备的用户体验。最常用的通知样式包括:

下文介绍如何将 MESSAGING_STYLE BIG_TEXT_STYLE 添加到通知中。要了解如何加入其他通知样式,请参阅 Wear 通知示例。

构建 MessagingStyle 通知

如果您有一个聊天消息传递应用,您的通知应使用 NotificationCompat.MessagingStyle,它是 Android 7.0 中的新增样式。Wear 使用 MessagingStyle 通知(请参阅 addMessage())中包含的聊天消息,以在扩展通知中提供丰富的类似聊天应用的体验。

MessagingStyle 扩展通知要求配对的 Android 手机上至少安装了 Android Wear 应用 1.5.0.2861804 版本。

智能回复

alt_text

Wear 针对 MessagingStyle 通知引入智能回复。智能回复在扩展通知和 RemoteInput 中为用户提供与情境相关的可触摸选项。这些选项扩充了开发者使用 setChoices() 函数在 RemoteInput 中提供的固定选项列表。

智能回复让用户可通过快速(只需点按一下)、礼貌(无需大声说话)、私密(用户接收的消息绝不会离开手表)且可靠(无需连接互联网)的方式响应聊天消息。

智能回复响应由手表上的机器学习模型完全通过 MessagingStyle 通知提供的上下文生成。生成智能回复响应无需向 Google 服务器发送用户通知数据。

要为通知操作启用智能回复,您需要执行以下操作:

  1. 使用 NotificationCompat.MessagingStyle
  2. 为通知操作调用函数 setAllowGeneratedReplies(true)
  3. 确保通知操作具有一个 RemoteInput(响应所在的位置)。

以下示例说明如何使用智能回复响应创建 MessagingStyle 通知。

// Create an intent for the reply action
Intent replyIntent = new Intent(this, ReplyActivity.class);
PendingIntent replyPendingIntent =
   PendingIntent.getActivity(this, 0, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);

// Create the reply action and add the remote input
NotificationCompat.Action action =
   new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon,
   getString(R.string.label), replyPendingIntent)
  .addRemoteInput(remoteInput)
   // 1) allow generated replies
  .setAllowGeneratedReplies(true)
  .build();

Notification noti = new NotificationCompat.Builder()
    .setContentTitle(messages.length + " new messages with " + sender.toString())
    .setContentText(subject)
    .setSmallIcon(R.drawable.new_message)
    .setLargeIcon(aBitmap)
    // 2) set the style to MessagingStyle
    .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name))
    .addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
    .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
    // 3) add an action with RemoteInput
    .extend(new WearableExtender().addAction(action)).build();

向 MessagingStyle 通知添加图像

您只需设置相应的 MIME 类型并将 URI 置于 NotificationCompat.MessagingStyle.Message.setData() 函数中的图像,即可向通知消息添加图像。

以下代码段可设置通知中图像类型的数据:

NotificationCompat.MessagingStyle.Message message = new Message("sticker", 1, "Jeff")
   .setData("image/png", stickerUri);

NotificationCompat notification = new NotificationCompat.Builder()
    .setStyle(new NotificationComapt.MessagingStyle("Me")
    .addMessage(message)
    .build());

在上述代码段中,变量 stickerUri 是一个 Uri,其指向一个可公开访问的位置,如此处所述。

构建 BigTextStyle 通知

您可以通过使用 BIG_TEXT_STYLE 将扩展文本内容插入通知中。在手持式设备上,用户可以通过展开通知查看扩展内容。在穿戴式设备上,使用 BigTextStyle 时扩展内容默认可见。

alt_text

要向通知添加扩展内容,可在 NotificationCompat.Builder 对象上调用 setStyle(),向其传递一个 BigTextStyleInboxStyle 的实例。

例如,以下代码将一个 NotificationCompat.BigTextStyle 实例添加到 Event 通知,以包含完整的 Event 说明(其包含的文本超出了为 setContentText() 提供的空间)。

// Specify the 'big view' content to display the long
// event description that may not fit the normal content text.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);

NotificationCompat.Builder notificationBuilder =
    new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setLargeIcon(BitmapFactory.decodeResource(
                getResources(), R.drawable.notif_background))
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent)
        .setStyle(bigStyle);

请注意,您可以使用 setLargeIcon() 函数向任意通知添加一个大图标图像。不过,这些图标在穿戴式设备上显示为大的背景图片,在为适应穿戴式设备屏幕而放大后显示效果不佳。要向通知添加穿戴式设备专属背景图片,请参阅为通知添加穿戴式设备专属功能。如需了解有关设计具有大图像的通知的详细信息,请参阅 Android Wear 的设计原则

此网站会使用 Cookie 来存储您在此网站上指定的语言和显示选项偏好设置。

获取最新的 Android Developers 资讯和提示,助您在 Google Play 上取得成功。

* 必填字段

成功!

在微信上关注 Google Developers

要以浏览此网站吗?

您请求访问的是网页,但是您为此网站设置的语言偏好为

要更改您的语言偏好设置并以浏览此网站吗?如果以后您想要更改语言偏好设置,请使用每个页面底部的语言菜单。

该类需要 或更高的 API 级别

此文档已被隐藏,因为您为该文档选择的 API 级别是 。您可以使用左侧导航栏上方的选择器来更改文档的 API 级别。

要详细了解如何根据您的应用需求指定 API 级别,请参阅支持不同平台版本

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)