12

如果使用标志“ FLAG_NO_CLEAR ”,则通知不会显示在 Android Wear 上。

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

我需要通知上的标志“ FLAG_NO_CLEAR ”,并有“解雇”、“打盹”等操作按钮!

4

2 回答 2

24

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

您有两种解决问题的方法——它们都有优点和缺点。请阅读下面的文字并决定哪种解决方案可以更好地解决您的情况:)

解决方案 1 - 使用组:

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

解决方案 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在实践中使用 a 的代码:
https ://stackoverflow.com/a/24896043/3827276

于 2014-07-23T16:49:11.147 回答
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);
于 2017-05-15T15:47:10.427 回答