我有以下问题。我有2节课。 1称为AlarmService,另一个称为TimeAlarm,它扩展了BroadcastReceiver。 应用程序应该执行以下操作:它应该生成一个新的警报到首选项中指定的时间(它已经...)也在Logcat中我可以看到警报是如何被触发的。但问题是,应该显示的通知不会显示在StatusBar中。
以下是我对此的所有代码:
的AndroidManifest.xml:
<receiver android:name="com.ikalma.alarmmanager.TimeAlarm">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
AlarmService.java:
private Context context;
private PendingIntent mAlarmSender;
public AlarmService(Context context) {
this.context = context;
Intent notifyIntent = new Intent(Intent.ACTION_MAIN);
notifyIntent.setClass(context, myActivity.class);
mAlarmSender = PendingIntent.getBroadcast(context, 0, notifyIntent, 0);
}
public void startAlarm(int stunde, int minute) {
Calendar updateTime = Calendar.getInstance();
updateTime.set(Calendar.HOUR_OF_DAY, stunde);
updateTime.set(Calendar.MINUTE, minute);
updateTime.set(Calendar.SECOND, 00);
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, mAlarmSender);
}
TimeAlarm.java:
@Override
public void onReceive(Context context, Intent intent) {
Log.e("TEST", "onReceive() called...");
}
清单中的接收器位于标签内部,因此不应该成为问题。 问题是,如果我重启我的设备,它会被调用。但是如果触发警报则不会。 但是如果触发了警报,也应该调用onReceive()方法,不是吗?
感谢您的帮助!
答案 0 :(得分:2)
您的意图过滤器仅监听启动完成意图,而不是您自己的警报广播意图操作。更新您的意图过滤器,以便收到您的广播意图(这意味着您的特殊情况将Intent.ACTION_MAIN的操作添加到您的意图过滤器)
<receiver android:name="com.ikalma.alarmmanager.TimeAlarm">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</receiver>