AlarmManager/BroadcastReceiver无法正常工作

3
我一直在尝试使用AlarmManager和BroadCastReceiver设置我的第一个闹钟,如此处所述:http://smartandroidians.blogspot.com.es/2010/04/alarmmanager-and-notification-in.html 我的设置: AndroidManifest.xml:
<receiver android:name="es.radiopodcastellano.player.SleepAlarm" />

我的主Activity 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);
}

SleepAlarm.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”标签中没有显示任何内容。我可能做错了什么?
1个回答

2

我找到了问题所在。

清单文件中的接收器位于小部件的另一个接收器内,它必须是应用程序的子级。因此,如果您遇到与我相同的行为,请检查是否正确设置了AndroidManifest.xml:


完美的答案!我是多么的愚蠢啊!这是最荒谬的匆忙行为,因为我知道它是如何工作的!该死! - sud007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接