Wear OS: уведомления не будут отображаться

Я разрабатываю отдельное приложение для Wear OS (Android 8+), и у меня возникают проблемы с уведомлениями.

Я запускаю Foreground Service с текущим уведомлением. Это постоянное уведомление работает очень хорошо и не имеет функций из Wear OS (поэтому код может работать на автономном Android).

Однако всякий раз, когда я хочу отображать другие уведомления, это невозможно.

Ни сообщения об ошибке, ничего: мои уведомления не отображаются. Я позаботился о том, чтобы создать отдельные каналы и включить их (через настройки).

Вот мой код, работающий в Looper.mainLooper() через Handler.

final Notification notification = new NotificationCompat.Builder(MonitorService.this, LOGS_CHANNEL_ID)
                        .setSmallIcon(R.drawable.ic_backup_logs) // vector (doesn't work with png as well)
                        .setContentTitle(getString(R.string.monitor_service_notification_log_file_backed_up_process))
                        .setContentText("test")
                        .setPriority(NotificationCompat.PRIORITY_HIGH)
                        .build();

notificationManagerCompat.notify(LOGS_ID, notification); // unique final static id

Я что-то упустил здесь?

Спасибо за помощь !


person Mackovich    schedule 17.10.2018    source источник


Ответы (1)


Используйте этот код

Notification.Builder b = new Notification.Builder(ctx);

    //FIX android O bug Notification add setChannelId("shipnow-message")
    NotificationChannel mChannel = null;
    b.setSmallIcon(R.drawable.ic_backup_logs) // vector (doesn't work with png as well)
                    .setContentTitle(getString(R.string.monitor_service_notification_log_file_backed_up_process))
                    .setContentText("test")
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        mChannel = new NotificationChannel("your-channel", "yourSubjectName",NotificationManager.IMPORTANCE_HIGH);
        b.setChannelId("your-channel");
    }

    NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        notificationManager.createNotificationChannel(mChannel);
    }
    notificationManager.notify(id, b.build());
person Radesh    schedule 17.10.2018
comment
Спасибо. Я заметил, что неправильно создал свои каналы, и ваше сообщение было хорошим пониманием. - person Mackovich; 18.10.2018