Хотите скрыть уведомление, но получение Context.startForegroundService () не вызвало Service.startForeground () - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу скрыть уведомление от появления, когда служба работает в фоновом режиме.Мне известно, что согласно правилам Google Play мы должны показывать уведомления, но для моего текущего приложения я не хочу показывать никаких уведомлений.

Вот код, который отлично работает и показывает уведомление.Но как сделать так, чтобы оно не показывало никаких уведомлений:

try {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                String NOTIFICATION_CHANNEL_ID = "com.app..";
                String channelName = "App Background Service";
                NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
                channel.setLightColor(Color.BLUE);
                channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                assert manager != null;
                manager.createNotificationChannel(channel);

                NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
                Notification notification = notificationBuilder.setOngoing(true)
                        .setSmallIcon(R.drawable.icon)
                        .setContentTitle("App is running in background")
                        .setPriority(NotificationManager.IMPORTANCE_MIN)
                        .setCategory(Notification.CATEGORY_SERVICE)
                        .build();
                startForeground(0, notification);
            } else
            {
                startForeground(0, new Notification());
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

Если я не вставлю вышеуказанный код, это выдаст ошибку, сообщающую, что startForeground не найден.И убивается через 5 секунд автоматически.

Причина: Context.startForegroundService () тогда не вызывал Service.startForeground ()

Я хочу, чтобы служба не показывала никаких уведомлений пользователю и завершила свою задачу без уведомлениябыть убитымЭто возможно даже в версии сборки> 26?

1 Ответ

0 голосов
/ 10 декабря 2018

Я хочу, чтобы сервис не показывал никаких уведомлений пользователю и завершил свою задачу в молчании, не будучи убитым

Используйте JobIntentService и убедитесь, что ваша работа будет выполнена менее чем за 10 минут,Обратите внимание, что до начала работы может быть некоторая задержка (которая не будет учитываться в этом 10-минутном пределе).

Или используйте IntentService и убедитесь, что ваша работа будет выполнена менее чем за 1 минуту.

Ни один из них не требует обслуживания переднего плана.

...