如果使用“ FLAG_NO_CLEAR ”标记,Android Wear上会显示不的通知。
有谁知道为什么或任何解决方法?我没有在文档中找到任何信息。
我的通知上需要“ FLAG_NO_CLEAR ”标志,并有“解除”,“贪睡”等操作按钮!
答案 0 :(得分:22)
通知标记FLAG_NO_CLEAR
基本上会使您的通知“正在进行”。从手机发布的正在进行的通知将不会显示在可穿戴设备上。
您的问题有两个解决方案 - 它们都有优点和缺点。请阅读以下文字并确定哪种解决方案能更好地解决您的问题:)
您可以使用Android Wear框架的group
功能。它基本上是为了在可穿戴设备上发布许多(分组)通知而在手机上发布一个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
:
https://stackoverflow.com/a/24896043/3827276
答案 1 :(得分:1)
老实说,佩戴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);