如果使用FLAG_NO_CLEAR,则不会显示Android Wear Notification

时间:2014-07-08 12:29:57

标签: android wear-os

如果使用“ FLAG_NO_CLEAR ”标记,Android Wear上会显示的通知。

有谁知道为什么或任何解决方法?我没有在文档中找到任何信息。

我的通知上需要“ FLAG_NO_CLEAR ”标志,并有“解除”,“贪睡”等操作按钮!

2 个答案:

答案 0 :(得分:22)

通知标记FLAG_NO_CLEAR基本上会使您的通知“正在进行”。从手机发布的正在进行的通知将不会显示在可穿戴设备上。

您的问题有两个解决方案 - 它们都有优点和缺点。请阅读以下文字并确定哪种解决方案能更好地解决您的问题:)

解决方案1 ​​ - 使用组:

您可以使用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

解决方案2 - 创建可穿戴应用程序:

来自手机的持续通知不会显示在手表上,但您可以创建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);