Как запустить конфигурацию Android AppWidget из другой активности?

Ну, это сводит меня с ума. Я разработал виджет App. Все работает нормально.

У меня есть активность конфигурации, которая запускается каждый раз, когда виджет добавляется на главный экран и работает красиво. Я сохраняю пользовательские настройки для каждого идентификатора виджета и т. Д.

У виджета есть несколько кнопок, один из которых запускает активность с информацией, «Об активности».

В «О деятельности» есть кнопка, которую я хочу использовать для запуска активности конфигурации для идентификатора виджета, который запустил «О мероприятии». Причина, по которой я хочу сделать это, – это то, что я хочу, чтобы пользователь мог настроить содержимое любого экземпляра моего виджета, не удаляя его и не добавляя снова (для запуска активности конфигурации).

Для работы в конфигурации требуется AppWidgetManager.EXTRA_APPWIDGET_ID, чтобы выполнить задание (сохранить пользовательские настройки для этого конкретного виджета), поэтому я должен каким-то образом передать это дополнительно, когда я назову его из другого действия. Очевидно, что нужно сделать следующее:

startActivity(new Intent(context,act_configure.class).putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, ??? )); 

Теперь мой вопрос – где виджет? Я нашел миллион способов получить виджеты (массив), но ни одного понятия о том, как получить конкретный виджет, который запустил «Об активности»,

Любая помощь по этому поводу заставит часы, которые я потратил, найти решение, что-то стоит. Заранее спасибо.

Ps Пожалуйста, простите мой английский, поскольку они не мой родной язык …

Как вы настраиваете свои виджеты? У меня есть приложение, в котором я перебираю активные виджеты и настраиваю RemoteView . Вы можете установить идентификатор вашего виджетов в onClick, который вы прикрепляете к кнопке «О программе».

 final AppWidgetManager widgetManager = AppWidgetManager.getInstance(this); final ComponentName widgetName = new ComponentName(this, WidgetProvider.class); final int[] widgetIds = widgetManager.getAppWidgetIds(widgetName); for (int widgetId : widgetIds) { final RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.widget); // This is the important part :-D remoteViews.findViewById(R.id.your_about_button).setOnClickListener(... a listener to start your about activity that puts the widget id in the extra like you suggest in your question ...); widgetManager.updateAppWidget(widgetId, remoteViews); } 

Благодаря Кори Чалтрону это решение моей проблемы.

В методе widget provider onUpdate я должен создать «уникальное» намерение перейти к ожидающемуся намерению, которое обрабатывает запуск активности. Из-за того, как Android сравнивает Intents, передача WidgetID в дополнительных функциях НЕ ДОСТАТОЧНО, вы должны также передать его в качестве данных для намерения, чтобы быть уникальным. Итак, вот код:

 Intent aboutIntent = new Intent(cx, act_about.class); aboutIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetIds[i]); // Make this unique for this appWidgetId aboutIntent.setData(Uri.withAppendedPath(Uri.parse("customuri://widget/id/"), String.valueOf(widgetID))); PendingIntent aboutPendingIntent = PendingIntent.getActivity(cx, 0, aboutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT); views.setOnClickPendingIntent(R.id.cmdabout, aboutPendingIntent) 

Хотя я отвечаю на свой вопрос, я не принимаю его, потому что он основан на ответе Кори. Спасибо всем за помощь…