ボタンを押すと、ユーザー入力を取得して変数に設定するメソッドが呼び出され、その変数が追加のインテントに入れられ、その値に応じて何をすべきかを決定する BroadcastReceiver に送信されます。最初にのみ機能し、次のすべてのプレスでは、変数の値が変更されても追加の値は変更されません。最初に押したときに設定された値を永久に保持します。インテント エクストラを新しい値で書き換える方法は?
エクストラの設定方法:
Intent intentForReceiver = new Intent(this, AlarmReceiver.class);
intentForReceiver.putExtra("checkBox1", checkBox1.isChecked());
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0,
intentForReceiver, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
BroadcastReceiverでエクストラを受け取り、それをサービスの意図に入れる方法:
Intent intentForService = new Intent(context, CMService.class);
intent.putExtra("checkBox1", intentForReceiver.getExtras().getBoolean("checkBox1"));
context.startService(intentForService);
サービスで追加料金を受け取る方法:
if(intentForService.getExtras().getBoolean("checkBox1")) {
...
} else {
...
}
これが私のコードです。checkBox1 のチェックを外してボタンを押しても、checkBox1.isChecked() が true の場合にのみ実行する必要があるため、この値は最初に押した後もずっと true のままで、チェックを外しても更新されないことを意味します。チェックボックス1.