Oreo - как настроить строку состояния службы переднего плана - PullRequest
0 голосов
/ 24 июня 2018

Я запускаю службу переднего плана, которая отображается в строке состояния под информацией о батарее систем Android.

Есть ли способ настроить информацию (название, подтекст, значок, ...), представленную?

enter image description here

сервисный код: РЕДАКТИРОВАНИЕ КОДА

@Override
    public void onCreate() {
        context = this.getApplicationContext();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Intent notificationIntent = new Intent(context, CallbackTestWidgetService.class);
            PendingIntent pendingIntent =
                    PendingIntent.getActivity(context, 10, notificationIntent, 0);

            Notification notification = new Notification.Builder(context, "Test")
                    .setContentTitle("Test")
                    .setContentText("text")
                    .setContentIntent(pendingIntent)
                    .setSmallIcon(R.drawable.test)
                    .setTicker("test")
                    .build();

CharSequence name = "test";
            String description = "test";
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel("10", name, importance);
            channel.setDescription("test");
            // Register the channel with the system; you can't change the importance
            // or other notification behaviors after this
            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(channel);

            startForeground(10, notification);
        }

    }

Ответы [ 3 ]

0 голосов
/ 24 июня 2018

То, что вы видите, это уведомление по умолчанию, когда приложение не публикует никаких уведомлений.

Причина, по которой уведомления не публикуются (несмотря на то, что вы звоните startForeground), заключается в том, что вы ориентируетесь на API 26 или выше и не связываете свое уведомление с каналом уведомлений . Это приводит к тому, что ваше уведомление будет полностью удалено в соответствии с примечанием на этой странице:

Внимание. Если вы настроили таргетинг на Android 8.0 (уровень API 26) и разместили уведомление, не указав канал уведомления, уведомление не появится, и система зарегистрирует ошибку.

При создании уведомления необходимо создать канал уведомлений, а затем указать идентификатор канала уведомлений.

0 голосов
/ 30 июня 2018

https://stackoverflow.com/users/4080424/narb https://stackoverflow.com/users/1676363/ianhanniballake

Я не могу изменить заголовок и текст содержимого уведомления, вызвав setContentTitle(CharSequence) и setContentText(CharSequence). Ты знаешь почему?

0 голосов
/ 24 июня 2018

Вы создаете Уведомление для передачи на startForeground.Используйте функцию createContentView, точно так же, как и для обычного уведомления, которое вы хотите настроить.

Обратите внимание, что это будет работать только на более новых версиях Android, вы, вероятно, захотите использовать класс NotiicationCompat из библиотеки поддержки для поддержкиРазличия между версиями API и тестирование на нескольких API-интерфейсах эмуляторов.

...