Я использую AlarmManager как этот код ниже (без метода setAcion () для alarmIntent)
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), duty.getId(), alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
Я исследовал и вижу, что почти пример предпочитает добавить действие для намерения тревоги, как этот код ниже, но я все еще не знаю, действительно ли это необходимо или нет?
alarmIntent.setAction("com.example.myalarm.action");
//add intent-filer for receiver declatation
<receiver
android:name="com.example.receivers.AlarmReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.example.myalarm.action" />
</intent-filter>
</receiver>