У меня странная ситуация с AlarmManager. Я планирую событие с AlarmManager и передаю строку, используя intent.putExtra. Струна либо бесшумна, либо вибрирует, и при срабатывании приемника телефон должен либо включить звонок, либо настроить телефон на вибрацию. Оператор журнала правильно выводит ожидаемое значение каждый раз.
Intent intent;
if (eventType.equals("start")) {
intent = new Intent(context, SReceiver.class);
} else {
intent = new Intent(context, EReceiver.class);
}
intent.setAction(eventType+Long.toString(newId));
Log.v("EditQT",ringerModeType.toUpperCase());
intent.putExtra("ringerModeType", ringerModeType.toUpperCase());
PendingIntent appIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService (Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
appIntent);
Приемник, который срабатывает, когда срабатывает сигнал тревоги, также имеет оператор журнала, и я могу видеть первый раз, когда оператор выводит ожидаемую строку либо SILENT, либо VIBRATE, но для каждого последующего выполнения вывод показывает исходное значение на стороне получателя , Будильник срабатывает, а затем я изменяю значение для putExtra на противоположную строку, и получатель по-прежнему отображает событие предыдущего значения, хотя вызов из кода выше показывает, что новое значение было передано. Значение для setAction каждый раз одинаково.
audioManager = (AudioManager) context.getSystemService(Activity.AUDIO_SERVICE);
Log.v("Start",intent.getExtras().get("ringerModeType").toString());
if (intent.getExtras().get("ringerModeType").equals("SILENTMODE")) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
} else {
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
Есть мысли?