Ответ 1
Флаг уведомления FLAG_NO_CLEAR
в основном делает ваше уведомление "текущим". Текущие сообщения, отправленные с телефона, НЕ будут отображаться на носимом устройстве.
У вас есть два решения вашей проблемы - оба они имеют преимущества и недостатки. Прочтите текст ниже и решите, какое решение лучше разрешит вашу ситуацию:)
Решение 1 - используйте группу:
Вы можете использовать функцию 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
Решение 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
на практике:
fooobar.com/questions/450362/...