如果使用标志“ FLAG_NO_CLEAR ”,则通知不会显示在 Android Wear 上。
有谁知道为什么或任何解决方法?我在文档中没有找到任何信息。
我需要通知上的标志“ FLAG_NO_CLEAR ”,并有“解雇”、“打盹”等操作按钮!
通知标志FLAG_NO_CLEAR
基本上使您的通知“持续”。从手机发布的持续通知将不会显示在可穿戴设备上。
您有两种解决问题的方法——它们都有优点和缺点。请阅读下面的文字并决定哪种解决方案可以更好地解决您的情况:)
您可以利用group
Android Wear 框架的功能。它基本上是为了在可穿戴设备上发布许多(分组)通知和summary
在手机上发布一个通知而创建的。但是使用这种机制,您还可以ongoing
在手机上发布一个通知,而仅在佩戴时发布第二个通知。您最终会ongoing
在手机上收到一份通知,在可穿戴设备上收到一份正常通知。
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")
.setOngoing(true)
.setOnlyAlertOnce(true)
.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")
.setOngoing(false)
.setOnlyAlertOnce(true)
.setGroup("GROUP")
.setGroupSummary(false);
notificationManager.notify(0, phoneNotificationBuilder.build());
notificationManager.notify(1, wearableNotificationBuilder.build());
此方法将允许您发布仅用于观看的“替代”通知,将您的ongoing
通知保留在手机上。但是(如前所述)手表上的通知不能ongoing
- 它必须是正常的通知。如果您真的想ongoing
在手表上获得真正的通知,则需要寻求第二种解决方案。
请在此处阅读有关分组(堆叠)通知的更多信息:
https ://developer.android.com/training/wearables/notifications/stacks.html
来自手机的持续通知不会显示在手表上,但您可以创建 Android 应用程序的可穿戴部分并直接在 Android Wear 上发布通知。您可以轻松地从那里发布正在进行的通知,但它与手机上的通知不同。您需要在两台设备之间同步它们。
DataApi
请在此处阅读更多信息:
https ://developer.android.com/training/wearables/data-layer/index.html
https://developer.android.com/training/wearables/data-layer/data-items.html
您还可以查看我的帖子,我在其中发布了演示如何DataApi
在实践中使用 a 的代码:
https ://stackoverflow.com/a/24896043/3827276
老实说,磨损 1.5 发生了一些非常奇怪的变化,所以解决方案是设置警报
Uri alarmSound = getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Intent displayIntent = new Intent(this, WearNotif.class);
//displayIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent displayPendingIntent = PendingIntent.getActivity(this,
0, displayIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("WeirdShit")
.setContentText("some random crap")
.extend(new Notification.WearableExtender()
.setDisplayIntent(displayPendingIntent))
.setSound(alarmSound)
.build();
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(this);
notificationManager.notify(25454, notification);