解决方法
无论何时在NotificationCompat.WearableExtender中使用addAction(),您实际上并没有扩展操作(尽管名称),而是将它们分成两个列表,一个用于电话,另一个用于可穿戴设备.
>手持设备上显示原始NotificationCompat.Builder上添加的操作.
> WearableExtender上添加的操作显示在Android Wear设备上.
见Specifying Wearable-only Actions:
If you want the actions available on the wearable to be different from
those on the handheld,then useWearableExtender.addAction()
. Once you
add an action with this method,the wearable does not display any
other actions added withNotificationCompat.Builder.addAction()
. That
is,only the actions added withWearableExtender.addAction()
appear on
the wearable and they do not appear on the handheld.
因此,要创建仅限手持设备的操作,请在创建扩展程序之前添加它们.要进行仅可穿戴动作,请在扩展器上添加它们.如果您使用扩展器并且想要在两个设备中重复操作,则必须在两者中添加它们(尽管可能有复制它们的选项?).
例如:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("The title") .setContentText("This is the text") .setContentIntent(pendingIntent); // Handheld-only actions. notificationBuilder.addAction(drawable1,"In Both",pendingIntent); notificationBuilder.addAction(drawable2,"Only in phone",pendingIntent); // Wearable-only actions. NotificationCompat.WearableExtender wearableExtender = new NotificationCompat.WearableExtender(); wearableExtender.addAction(new NotificationCompat.Action.Builder(drawable2,pendingIntent).build()); wearableExtender.addAction(new NotificationCompat.Action.Builder(drawable3,"Only in wearable",pendingIntent).build()); notificationBuilder.extend(wearableExtender); // Build and show notification. NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); notificationManager.notify(notificationId,notificationBuilder.build());
也
>如果您创建了WearableExtender但未向其中添加任何操作,则使用原始通知中的操作.>手持设备的“内容意图”似乎总是出现在手表上,带有“打开电话”文本.我还没有找到一种方法只为手表禁用此功能.