Intereting Posts
Проблемы с задержкой VOIP / SIP на устройствах Android Защита приложения для рынка Как загрузить и импортировать файл CSS / JS с телефона в телефонном разговоре? Android TableLayout: сохранение ширины столбцов между разными таблицами Как «перезапустить» приложение для Android в программном отношении Google Play Game Services разблокирует достижение – хранить разблокировку в игре или разблокировать вызов () каждый раз? DSR включен. Не отправляйте DTR на Android ActionBarSherlock дает тонны «Call требует, чтобы уровень API уровня 11 (текущий минимум 7)» Библиотека Picasso не загружает изображения с SD-карты на Android Разверните приложение для Android. Отсутствует задача installReleaseDebug для градиента Запись многострочного текста на кнопке на Android Как установить ширину ListView в PopupWindow на Android? Служба Android Jelly Bean, которая получает все события касания Как создать сетку сетки Recycler с горизонтальной прокруткой Объект Texture to Paint в Android?

Как запустить конфигурацию 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) 

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