У меня есть widget
, который устанавливает число pendingIntents
. Все отлично работает с виджетом, пока у меня есть только один виджет на главном экране.
На данный момент я решил, что собираюсь ограничить пользователя только одним из моих виджетов на главном экране. Если один из них уже используется, ConfigureActivity
предоставляет пользователю диалоговое окно предупреждения о том, что он не может добавить второй, а затем устанавливает setResult(RESULT_CANCELED, null)
и затем finish().
Это работает просто отлично и не позволяет пользователю настраивать какие-либо дополнительные виджеты на главном экране, но для того, который уже установлен, большая часть моих pendingIntents
не сработает. Logcat сообщает мне: "Невозможно отправить ожидающее намерение:"
Каждый из pendingIntents настроен на запуск службы, которая используется для обновления виджета. Если я удалю виджет и перезагрузлю его, он снова будет работать нормально, пока я не попытаюсь добавить второй виджет. На данный момент это немного сбивает меня с толку. У кого-нибудь есть идеи относительно того, почему начало добавления 2-го виджета, но не его завершение, отменит мои предыдущие ожидающие намерения?
В случае, если это имеет значение, pendingIntents, где настроено значение FLAG_CANCEL_CURRENT
.
Вот код, используемый для установки моих intent
и pendingIntents
.
Intent intentDialog = new Intent(getBaseContext(), ScheduleActionsActivity.class);
intentDialog.putExtra("Action", ACTION_ENTER_SCHEDULE);
intentDialog.setAction("abc.hwRowOne");
intentDialog.putExtra("scheduleId", sch.getId());
intentDialog.putExtra("scheduleDescription", sch.getDescription());
PendingIntent pendingIntentDialog1 = PendingIntent.getActivity(getBaseContext(), 0, intentDialog, PendingIntent.FLAG_CANCEL_CURRENT);
views.setOnClickPendingIntent(R.id.hwRowOne, pendingIntentDialog1);
Строка, в которой intentDialog.setAction()
изменяется, становится уникальной для каждой строки виджета, поэтому я подумал, что это также делает мой pendingIntent уникальным.
Я видел этот ответ прошлой ночью после публикации моего вопроса, но я не уверен, почему и как он работает, и я не уверен, где его разместить в моем районе. Кажется, он устанавливает уникальные данные для каждого намерения, но я думал, что это то, что делал мой .setAction()
. Несколько экземпляров виджета с обновлением только последнего виджета
Итак, чтобы ответить на ваш вопрос, нет, я вообще не использую appWidgetId в своих намерениях, мне просто нужно передать его как putExtra()
, а затем как intentDialog
?