我需要在我的应用程序中安排一个重复警报,该警报每天在特定时间(每天最初使用时间选择器组件选择该时间)重复一次。我知道为了在设备重启后接收警报,我需要实现一个代码以自动重启重复的警报。但是重启设备后我没有收到警报。以下是我的代码,我已经尝试过这里和其他网站中建议的几种解决方案。我不明白问题出在哪里以及解决方案是什么。
(我已经删除了选择时间并存储和从共享首选项中提取时间的代码部分)
安排警报的方法
private void startAlarm (Calendar c) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlertReceiverSleepTime.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 2, intent, 0);
if (c.before(Calendar.getInstance())) {
c.add(Calendar.DATE, 1);
}
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}
BootAlarmReceiver.java
public class BootAlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Intent intentReschedule = new Intent(context, AlertReceiverSleepTime.class);
PendingIntent pendingIntent = PendingIntent
.getBroadcast(context, 2, intentReschedule, 0);
AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootAlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>