Не получать уведомления с помощью AlarmManager - PullRequest
0 голосов
/ 10 апреля 2019

Я работаю с Android API 28. Через AlarmManager я хотел отправить push-уведомление в определенное время в Service. Таким образом, в сервисе alarmManager устанавливает конкретную продолжительность отправки push-уведомления.

Я пытался это сделать, поэтому искал какой-то пример. Это работало на «Зефире 6.0 и Нуге 7.0». Но не работает на моем телефоне (Android Pie 9.0).

Только я обнаружил, что работает "Уведомление о работе", но мне нужно съемное уведомление от службы.

Как я могу это сделать? Мне нужна ваша помощь. Спасибо, что прочитали мой вопрос.

ДОБАВЛЕННЫЙ КОД

nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
     tabletnoti_channel = new NotificationChannel(TABLETNOTI_ID, getString(R.string.noti), NotificationManager.IMPORTANCE_DEFAULT);
     tabletnoti_channel.setDescription(getString(R.string.app_name));
     tabletnoti_channel.enableLights(true);
     tabletnoti_channel.setLightColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary));
     tabletnoti_channel.enableVibration(true);
     tabletnoti_channel.setVibrationPattern(new long[]{100, 200, 100, 200});
     tabletnoti_channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);

     nm.createNotificationChannel(tabletnoti_channel);
 }

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
     Statebuilder = new Notification.Builder(getApplicationContext(), TABLETNOTI_ID);
 } else {
     Statebuilder = new Notification.Builder(getApplicationContext());
 }

 StateBuilder.setContentTitle(sharedPreferences.getString("connectDevice", "sample") + " " + getString(R.string.device_bat))
     .setContentText(getString(R.string.not_connected))
     .setOngoing(true)
     .setShowWhen(false)
     .setColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary))
     .setSmallIcon(R.drawable.ic_cloud_off)
     .setOnlyAlertOnce(true);

 if (sharedPreferences.getBoolean("show_noti", true)) nm.notify(STATE_NOTI_ID, StateBuilder.build());
 else nm.cancel(STATE_NOTI_ID);
...