Почему PendingIntent не передает мою пользовательскую установку Отдельно оплачиваемых предметов обратно для Намерения?

Это подвергает сомнению, так или иначе касается вопроса, когда я надеялся возвращать отдельно оплачиваемые предметы в startActivityForResult, но теперь я сталкиваюсь с другой проблемой.

Я подписался для получения ProximityAlerts, и я явно создал Намерение включать некоторые Отдельно оплачиваемые предметы. Но когда я получил сервис, отдельно оплачиваемые предметы не там.

После ответов здесь рабочий код:

Intent intent = new Intent(this, PlacesProximityHandlerService.class);
intent.setAction("PlacesProximityHandlerService");
intent.putExtra("lat", objPlace.getLat());
intent.putExtra("lon", objPlace.getLon());
intent.putExtra("error_m", objPlace.getError()+ALERT_RANGE_IN_METERS);
PendingIntent sender=PendingIntent.getService(this, 0, intent, 0);
LocationUtils.addProximity(this, objPlace.getLat(), objPlace.getLon(),objPlace.getError()+ALERT_RANGE_IN_METERS, -1, sender);

В документации говорится параметрический усилитель PendingIntent to be sent for each location update

34
задан Community 23 May 2017 в 11:46
поделиться

2 ответа

По какой-то неустановленной причине дополнительные файлы будут доставлены только в том случае, если вы задали некоторое действие, например setAction("foo"). То, о чем говорит CommonsWare, применимо только при получении экземпляров PendingIntent, если вы не установили FLAG_ONE_SHOT. Это можно исправить с помощью аргумента requestCode в фабричных методах PendingIntent.get.... Хотя в документации сказано, что в настоящее время он не используется, он действительно учитывается при различении PendingIntent.

В вашем случае вам не нужно задавать ничего, кроме фиктивной строки действия. LocationManagerService повторно использует PendingIntent, на который вы подписались для оповещений о приближении, и добавляет флаг, только если телефон вошел или вышел из диапазона оповещения.

42
ответ дан 27 November 2019 в 16:31
поделиться

Если у вас есть несколько невыполненных PendingIntents , вам необходимо убедиться, что лежащие в основе намерения отличаются не только своими дополнительными функциями. В противном случае Android будет продолжать повторно использовать первый PendingIntent , созданный для вашего первого Intent , все время используя дополнительные элементы этого первого Intent .

Например, вы можете добавить уникальное действие через setAction () , которое не изменит вашу маршрутизацию Intent (поскольку вы указываете компонент), но оно сделает Ваши Намерения разные.

22
ответ дан 27 November 2019 в 16:31
поделиться
Другие вопросы по тегам:

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