我知道这是一个基本的问题,但它仍然让我抓狂。我正在设置一个重复的闹钟,但是接收器从未被呼叫过。
Intent intent = new Intent(NewSchedule.this, RepeatingAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(NewSchedule.this, 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, calendar.getTimeInMillis(), 5 * 1000, sender);
Log.i("calendar",calendar.getTimeInMillis() + "");
Toast.makeText(NewSchedule.this, "repeating_scheduled", Toast.LENGTH_SHORT).show();
public class RepeatingAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "repeating_received", Toast.LENGTH_LONG).show();
}
}
<receiver android:name=".RepeatingAlarm" android:process=":remote" />我正在手机上测试。日历日志显示了确切的时间。在receiver类中,我从来没有得到过Toast。
发布于 2012-10-11 03:40:14
实际上,事实证明我的代码是好的。不知何故,警报启动并运行,因此由于某种未知的原因(至少对我来说),接收器无法被调用。当我创建一个新项目并测试该接收器工作正常时,我发现了这一点。我也不得不停止闹钟。然后,我返回到我的原始项目,在没有更改任何行的情况下启动了相同的警报,它工作得很好。有没有人经历过这种情况?
发布于 2012-10-11 03:29:35
参考:Android Alarm Manager with broadcast receiver
Intent sender = new Intent("WhatEverYouWant");
PendingIntent senderPIntent = PendingIntent.getBroadcast(context, 0, sender, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, triggerTime, senderPIntent);
// In Manifest.xml file
<receiver android:name="com.package.YourOnReceiver">
<intent-filter>
<action android:name="WhatEverYouWant" />
</intent-filter>
</receiver>https://stackoverflow.com/questions/12826656
复制相似问题