Android Wear:以编程方式停止我的应用通知显示在手表上

时间:2014-07-27 19:08:32

标签: android android-notifications wear-os

从阅读wearable-notifications documentation开始,似乎无法以编程方式阻止我的应用通知出现在已连接的可穿戴设备上。我可以将我的应用添加到“静音”状态。应用'使用掌上电脑上的Android Wear应用列表;但是,我想使用代码来做到这一点。如果您已经弄清楚了,请告诉我。

此外,是否可以在手机和可穿戴设备上显示完全不同的通知,而不是仅在可穿戴设备上设置不同的通知操作?

感谢您的回复!

2 个答案:

答案 0 :(得分:8)

使用setLocalOnly(true),可以仅在手机上显示通知。实际上,这会以编程方式静音您的应用 - 您的应用通知不会出现在已连接的设备上。

要为手机和可穿戴设备创建完全不同的通知,我们可以编写一个显示自定义通知的随播可穿戴应用。然后,使用setLocalOnly()停止在可穿戴设备上显示电话通知。我还没有尝试过MaciejCiemięga提到的'堆叠'。


(添加此作为答案,以便那些可能会错过对已接受答案的评论的人的利益。)

答案 1 :(得分:0)

第一个问题:

我担心无法通过代码静音应用程序。

第二个问题:

可以在手机和手表上显示不同的通知。 您可以通过实施可穿戴应用程序并在手表和手机上分别显示本地(setLocalOnly())通知(+使用DataApi将其与手机同步)来实现。


或者,您可以使用Android Wear框架的组功能。它基本上是为了在可穿戴设备上发布许多(分组)通知而在手机上发布一个摘要通知。但是,使用此机制,您还可以在手机上发布一个(摘要)通知,仅在佩戴时发布第二个通知。

final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);

// This notification will be shown only on phone
final NotificationCompat.Builder phoneNotificationBuilder = new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.ic_launcher)
    .setContentTitle("Title phone")
    .setContentText("Text phone")
    .setGroup("GROUP")
    .setGroupSummary(true);

// This notification will be shown only on watch
final NotificationCompat.Builder wearableNotificationBuilder = new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.ic_launcher)
    .setContentTitle("Title wearable")
    .setContentText("Text wearable")
    .setGroup("GROUP")
    .setGroupSummary(false);

notificationManager.notify(0, phoneNotificationBuilder.build());
notificationManager.notify(1, wearableNotificationBuilder.build());

这样你就可以创建" stack"只有一个通知(+当然是摘要通知)。带有一个通知的堆栈只会出现在手表上,摘要通知只会出现在手机上 - 所以这就是你想要达到的目的:)

请在此处详细了解分组(堆叠)通知: https://developer.android.com/training/wearables/notifications/stacks.html