AlarmManagerを24時間ごとに繰り返し設定したいが、コードが機能しない。Android AlarmManagerが不要に繰り返す
MainActivityにAlarmManagerを設定し、IntentをMainActivityに送信するAlarmReceiverを使用してポップアップ通知をトリガーします。
AlarmMangerも設定されているかどうかをチェックしますが、私のコードで(###)でコメントを外したalarmIntent2を使用しないと常にfalseを返します。 alarmIntent2を使用しても通知がない場合、AlarmManagerは正しく設定されません。
MainActivityが呼び出されるたびに、AlarmManagerが再度設定されます。
私は間違っていますか?おかげさまで
MainActivity.class
MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent myIntent = this.getIntent();
if(myIntent.getExtras() != null) {
String nid = myIntent.getExtras().containsKey("nid") ? myIntent.getExtras().getString("nid") : "-";
if(nid.equals("1234")) {
startFragmentActivityToShowMessage();
}
else {
addNotification();
}
}
}
private void addNotification() {
boolean alarmUp = false;
alarmUp = (PendingIntent.getBroadcast(this, 0,
new Intent("com.mypackage.AlarmReceiver.class"),
PendingIntent.FLAG_NO_CREATE) != null);
if(!alarmUp) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 01);
Intent alarmIntent = new Intent(this, com.mypackage.AlarmReceiver.class);
// (###) Intent alarmIntent2 = new Intent("com.mypackage.AlarmReceiver.class"); (###)
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60* 24, pendingIntent);
}
}