AlarmManager未从Bootreceiver设置

时间:2011-06-17 17:43:16

标签: android

因为在手机启动时清除了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,并且在我的应用程序中设置警报时,每个人工作正常。如果有人有类似的问题或有我的问题的答案,请告诉我.. 谢谢你

2 个答案:

答案 0 :(得分:1)

您可能需要设置唤醒锁定以使手机保持足够长的时间以完成任务。请参阅此处的信息:

https://github.com/commonsguy/cwac-wakeful

http://www.androidguys.com/2009/04/02/wake-up-with-the-alarm/

答案 1 :(得分:0)

要检查的几件事情:

  • 您的BootReceiver实现为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>