BroadcastReceiver を呼び出すには、次のコードが必要です。
public class WorkItemAlarmManager {
...
public void initAlarm(HelpMe helpMe, String delay,String period,WorkItem workItem){
//HelpMe = Activity
helpMe.registerReceiver(new WorkItemAlarmHandler() , new IntentFilter("WORK_ITEM_ALARM"));
Intent intent = new Intent("WORK_ITEM_ALARM");
intent.setClass(helpMe, WorkItemAlarmManager.class);
intent.putExtra("work_item", workItem);
PendingIntent mAlarmSender = PendingIntent.getService(helpMe, 0,intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
//System.out.println("START"+System.currentTimeMillis());
calendar.add(Calendar.SECOND, calcDelayMillis(delay));
//System.out.println("END"+calendar.getTimeInMillis());
AlarmManager am = (AlarmManager) helpMe.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), mAlarmSender);
}
...
}
および BroadcastReceiver:
public class WorkItemAlarmHandler extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
....
}
}
しかし、WorkItemAlarmHandler が呼び出されることはありません。
更新: 最初にマニフェストに BroadcastReceiver を登録しようとしました。しかし、それはうまくいきませんでした:
<receiver
android:name="de.helpme.alarm.WorkItemAlarmHandler"
android:enabled="true"
android:label="WorkItemAlarmHandler" >
<intent-filter>
<action android:name="WORK_ITEM_ALARM" />
</intent-filter>
</receiver>
あなたの答えをありがとう:)。今では動作しますが、両方の回答を一度に実装したため、どちらが正しいかはまだわかりません。どちらが正しいかがわかったら、正しいものを答えとしてマークします。
更新: 問題の原因は次のとおりです。
PendingIntent mAlarmSender = PendingIntent.getService(helpMe, 0,intent, 0);
このコードを使用すると、正常に動作します。
PendingIntent mAlarmSender = PendingIntent.getBroadcast(helpMe, 0, intent, 0);
あなたのご親切に感謝します!