因为在手机启动时清除了AlarmManager这一事实,我创建了一个BootReceiver类,在这种情况下我应该重置警报。 但即使这个类的其他代码以某种方式执行,AlarmManager也没有设置,因此从不调用AlarmReceiver类。以下是我的BootReceiver类代码的一部分:
Calendar Od = Calendar.getInstance();
Od.set(yearOd, monthOd, dayOd, hourOd, minuteOd);
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
int id= rebootCursor.getInt(ToDoDBAdapter.ID_COLUMN);
Intent i = new Intent(context, AlarmReceiver.class);
i.putExtra("alarm_message", "stavi_vibracii");
i.putExtra("doVreme",vremeDo);
i.putExtra("doDatum",dateDo);
PendingIntent sender = PendingIntent.getBroadcast(context, id, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, Od.getTimeInMillis(), sender);
我应该注意到我在Manifest文件中注册了BootReceiver和AlarmManger,并且在我的应用程序中设置警报时,每个人工作正常。如果有人有类似的问题或有我的问题的答案,请告诉我.. 谢谢你
答案 0 :(得分:1)
您可能需要设置唤醒锁定以使手机保持足够长的时间以完成任务。请参阅此处的信息:
https://github.com/commonsguy/cwac-wakeful
和
http://www.androidguys.com/2009/04/02/wake-up-with-the-alarm/
答案 1 :(得分:0)
要检查的几件事情:
BroadcastReceiver
RECEIVE_BOOT_COMPLETED
权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>