2011-06-17 14 views
2

中设置,因为当电话启动时AlarmManager被清除,我创建了一个BootReceiver类,在这种情况下应该重置警报。 但即使该类的其他代码以某种方式执行,AlarmManager也不会被设置,所以AlarmReceiver类永远不会被调用。下面是从BootReceiver类我的代码部分:AlarmManager未从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); 

我要指出,我已经注册了BootReceiver和AlarmManger在清单文件,和我的应用程序内设置报警时everyhting工作的罚款。如果有人有类似的问题或有回答我的问题,请让我知道.. 感谢ü

+0

请人帮助我也陷在这种情况下。 –

+0

查看接受答案中的链接。希望有所帮助! – Sandra

回答

1

您可能需要设定唤醒锁,以保持手机清醒足够长的时间来完成你的任务。在这里看到的信息:

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

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

+0

好的,我会检查这个。Thx – Sandra

+0

@Sandra这个解决方案适合你吗?根据我的理解,这不是你问的问题,我面临同样的问题报警不设置,但其他代码正在执行。您接受的答案处理报警代码或在报警时间执行的代码。 –

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> 
+0

谢谢你的回复,但是,是的,我的BootReceiver类是作为BroadcastReceiver实现的(扩展了BroadcastReceiver),我在清单中拥有所需的权限和意图过滤器。我的问题不是bootreceiver类,因为这个类是在启动时调用的,但不知怎的,警报​​不能从它设置。有另一种方法可以做到这一点吗? – Sandra

+0

我也尝试过定义一个新的服务,我开始在电话上启动,并且实现了与设置闹钟但是没有运气相同的逻辑(我在此线程中编写的前一个代码):(我真的不知道为什么它不工作,或者我在做什么错... – Sandra