Вопрос по android – дополнения к намерениям дублируются при использовании FLAG_UPDATE_CURRENT в PendingIntent при создании уведомлений для Android

19

Я хочу создать несколько уведомлений, которые запускают действие (или обновляют его) для отображения описания продукта.

<code>Notification notification = new Notification(R.drawable.applicationicon,
            Resources.getString("NewSaleNotification", context),
            System.currentTimeMillis());
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

Intent intent = new Intent(context, MainApplication.class);
intent.putExtra("saleid", saleid);

// to be sure the activity won't be restarted
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, SaleTitle, SaleMessage, pendingIntent);
notificationManager.notify(saleid, notification);
</code>

Когда я создаю PendingIntent, у меня есть 4 варианта: FLAG_CANCEL_CURRENT, FLAG_NO_CREATE, FLAG_ONE_SHOT и FLAG_UPDATE_CURRENT.

Определение последнего (http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT) - это то, что я хочу сделать, но это не работает так, как должно. Если я создаю 2 уведомления, они оба имеют одинаковый «saleid». дополнительный, который является последним. Как я могу сделать более одного уведомления с разными «saleid»? дополнительно?

Ваш Ответ

1   ответ
27

but it doesn't work as it should

Да, это так.

If I create 2 notifications, they both have the same 'saleid' extra which is the latest one.

Это именно то, чтодокументация говорит, что должно произойти.

How can I make more than one notification with differents 'saleid' extra?

Вариант № 1: поместите разные строки действий в каждом из вашихIntents, Это сделает их разными (с точки зренияfilterEquals()) и отдать их отдельноPendingIntents, Однако, так как вы указываете компонент вIntent (MainApplication.class) действие не повлияет на то, какIntent маршрутизируется

Вариант № 2: Используйте другойrequestCode (2-й параметр) на вашемgetActivity() звонки. Хотя это задокументировано как «в настоящее время не используется», это приводит кPendingIntent объекты возвращаются. Однако, поскольку это поведение не документировано, оно может измениться в будущем.

настройки разные действия решили мою проблему, спасибо за ответ
Вариант № 2 - абсолютно то решение, которое я искал, поскольку я испытываю искушение бегать вокруг переполнения стека и указывать всем на этот ответ. Очень неприятно иметь «другое» уведомления передают идентичные дополнения (самые последние) в свою активность при выборе. Это исправляет это. Теперь.

Похожие вопросы