В отличие от iOS, в Android нельзя запланировать уведомления напрямую с помощью API уведомлений ОС. Вместо этого вам необходимо:
1 - создать тревогу с помощью службы AlarmManager
.
2 - обработать намерение после запуска ОС Android с помощью BroadcastReceiver
.
3 - показать уведомление с помощью кодапохож на тот, который вы разместили в вопросе.
Исходя из вашего кода, я предполагаю, что вы пытаетесь использовать метод setWhen
, чтобы установить, когда должно отображаться уведомление. Тем не менее, из документов вы можете видеть, что этот метод:
/**
* Set the time that the event occurred. Notifications in the panel are
* sorted by this time.
*/
Это означает, что эта информация используется только для определения порядка уведомлений, , но он не «планирует» уведомление в любомway.
Есть несколько моментов, касающихся того, как запрограммировать эту функцию. Взгляните на это, например:
https://www.raywenderlich.com/1214490-android-notifications-tutorial-getting-started
edit:
Из кода, который вы опубликовали. Будьте осторожны с этой строкой:
long futureInMillis = SystemClock.elapsedRealtimeNanos () + different
Вызов SystemClock.elapsedRealtimeNanos()
вернет наносекунд вместо миллисекунд. В результате неправильная задержка.
Измените ее на:
SystemClock.elapsedRealtime()
и убедитесь, что переменная different
на самом деле миллисекунды, а не секунды или что-либо еще.