намерение для BroadcastReceiver не работает правильно - PullRequest
0 голосов
/ 13 января 2012

Как я могу «очистить» значения от лишних намерений?

Активность:

@Override
public void onCreate(Bundle savedInstanceState) {

...

Intent intent = new Intent(this, MyBroadcastReceiver .class);
intent.putExtra("valueOne", "valOne");
intent.putExtra("valueTwo", true);
intent.putExtra("valueThree", 1);

PendingIntent pendingIntent = PendingIntent.getBroadcast(
    this.getApplicationContext(), 234324243, intent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
    + (5 * 1000), pendingIntent);

...

}

BroadcastReceiver:

@Override
public void onReceive(Context context, Intent intent) {

... 

String valueOne= intent.getStringExtra("valueOne");
Boolean valueTwo= intent.getBooleanExtra("valueTwo", false);
Integer valueThree= intent.getIntExtra("valueThree", 0);

// Log.i("info", valueOne) >> valOne
// Log.i("info", valueTwo.toString()) >> false
// Log.i("info", valueThree.toString()) >> 1

...

}

Если я изменяю значение в Activity и снова запускаю приложение, я получаю те же значения, что и при первом запуске. Я пытаюсь удалить приложение с моего телефона / виртуальной машины, очистить проект, но проблема остается: (

Кто-нибудь мне поможет?

Ответы [ 2 ]

4 голосов
/ 13 января 2012

В объявлении Pending Intent попытайтесь установить следующий флаг:

PendingIntent.FLAG_UPDATE_CURRENT

В вашем случае это должно быть следующим:

PendingIntent pendingIntent = PendingIntent.getBroadcast(
    this.getApplicationContext(), 234324243, intent, PendingIntent.FLAG_UPDATE_CURRENT);
2 голосов
/ 13 января 2012

Во-первых, я предлагаю вам отформатировать ваш код здесь. Так что люди здесь будут рады прочитать ваш код проблемы. Ваш список кодов выше НЕ регистрирует какой-либо BroadcastReceiver в системе. Вы бы лучше проверить ApiDemo для более подробной информации.

А также смотрите этот

...