Здравствуйте!
Передо мной стоит задача отправки уведомлений по заданному времени пользователем. Например пользователь может создать несколько задач на определенное время, а приложение при наступлении этого времени шлет уведомление. Все действия выполняются строго в приложении без использования Firebase Cloud Messages
Я создал BroadcastReceiver с фильтром BOOT_COMPLETED, в котором запускается Service. В самом Service я создал логику пробежки по базе, определения времени и если время достигнуто, то выводит уведомление
В целом я понимаю как должно быть, но ничего не выходит, поэтому прошу вас разобраться с моими вопросам:
1. Как сделать так, чтобы приложение работало в фоне и выдавало уведомление даже через продолжительное время, даже когда приложение не запущено?
2. Где надо регистрировать BroadcastReceiver?
3. У меня при запуске intent в BroadcastReceiver при работе в фоне выдает ошибку: Not allowed to start service Intent
4. У меня при работе в приложении и выполнения BroadcastReceiver приложение перезапускает активити
5. Согласно
статье, разрешение указанное я не смог найти android.permission.SCHEDULE_EXACT_ALARM
6. У меня в AlarmManager нет
canScheduleExactAlarms(), хотя указано что метод есть
BroadcastReceiver, _notification_receiver.java
public void onReceive( Context context, Intent intent )
{
Intent INTENT = new Intent( context, _notification_service.class );
context.startService( INTENT );
}
PendingIntent pendingIntent = PendingIntent.getBroadcast( this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT );
AlarmManager alarmManager = ( AlarmManager ) getSystemService( Context.ALARM_SERVICE );
if (pendingIntent != null && alarmManager != null ) alarmManager.cancel( pendingIntent );
alarmManager.setRepeating( alarmType, time, replace, pendingIntent );