我一直在尝试使用AlarmManager和BroadCastReceiver设置我的第一个闹钟,如下所述:http://smartandroidians.blogspot.com.es/2010/04/alarmmanager-and-notification-in.html
我的设置:
AndroidManifest.xml:
<receiver android:name="es.radiopodcastellano.player.SleepAlarm" />
我的主要活动onCreate(这段代码实际上驻留在一个子类上,但为了简化起见,我把它放在那里):
@Override
public void onCreate(Bundle savedInstanceState) {
// <Stripped code>
AlarmManager alarm = (AlarmManager) currentContext.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this.getApplicationContext(), SleepAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
alarm.set(AlarmManager.RTC_WAKEUP,(System.currentTimeMillis() + (5 * 1000)),pendingIntent);
}
睡眠报警器.java:
public class SleepAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("RPod_SleepAlarm","Alarm!!");
}
}
"adb shell dumpsys alarm"的输出显示了这一点,因此似乎正在调用意图:
es.radiopodcastellano.player
221ms running, 32 wakeups
44 alarms: flg=0x4 cmp=es.radiopodcastellano.player/.SleepAlarm
但是,Logcat 没有显示任何"RPod_SleepAlarm"标签。我可能做错了什么?
我发现了问题。
清单上的接收器位于小组件的另一个接收器内,并且它必须是应用程序的子级。因此,如果您的行为与我相同,请检查您是否正确设置了 AndroidManifest.xml: