Intent.putExtras не соответствует - PullRequest
2 голосов
/ 17 мая 2010

У меня странная ситуация с 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);
}

Есть мысли?

Ответы [ 2 ]

7 голосов
/ 17 мая 2010

Ваш вопрос был задан шесть часов назад .

Если у вас будет несколько PendingIntents одновременно с разными дополнениями, вам нужно будет изменить что-то еще в Intents, например строку действия или Uri, как описано в связанной с проблемой проблеме выше.

Если у вас будет только один PendingIntent за раз, но ваши дополнительные расходы могут отличаться, просто используйте FLAG_UPDATE_CURRENT в своем звонке на getBroadcast().

1 голос
/ 31 октября 2010

Несколько ожидающих рассмотрения:

Intent notificationIntent = new Intent(this, Oconf.class);
notificationIntent.setData(Uri.parse("text"));

Затем onNewIntent (намерение):

String text = intent.getData().toString();
...