AppWidgetProvider: onAppWidgetOptionsChanged не вызывается при размещении виджета

Согласно документации onAppWidgetOptionsChanged в AppWidgetProvider: «Это вызывается, когда виджет сначала помещается и в любое время изменяется размер виджета».

Однако, когда я размещаю свой виджет на пусковой установке в Android 4.2 и 4.3, этот метод не вызывается сразу (только после изменения размера виджета). Я попробовал это в своем собственном приложении, а также в https://github.com/commonsguy/ CommonsWare/cw-omnibus/tree/master/AppWidget/Resize

Есть что-то, чего я не хватает?

EDIT: Единственная пусковая установка, которую я обнаружил, что этот метод работает правильно, как описано в документации Google, – Action Launcher Pro; Хорошая работа и спасибо, Крис Лейси! Почему пусковая установка не работает? У кого-нибудь еще есть эта проблема?

Спасибо за привлечение внимания к этой проблеме. Я буду обновлять документацию на Android, чтобы отразить это.

Однако вместо принудительного вызова onAppWidgetOptionsChanged () в onUpdate () мы рекомендуем использовать такой подход, как:

public class AppWidget extends AppWidgetProvider { .... @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); final int N = appWidgetIds.length; for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId); updateWidget(context, appWidgetManager, appWidgetId, options); } } public void onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) { updateWidget(context, appWidgetManager, appWidgetId, newOptions); } private void updateWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle options) { // Do whatever you need to do to the widget. Include any customization based // on the size, included in the options. Be sure to have a graceful fallback if // no valid size data is included in the bundle. } ... } 

Итак, в документации говорится о onUpdate (): «… [I] f вы объявили конфигурационную активность, этот метод не вызывается, когда пользователь добавляет виджет App, но вызывается для последующих обновлений». Ну, видимо, это тоже неправда. OnUpdate (), хотя у меня есть настройка Activity для моего виджета.

В любом случае, вызов onAppWidgetOptionsChanged () из onUpdate () кажется обходным путем в пусковых установках с 4.2 +, потому что onUpdate () вызывается, когда виджет сначала помещается на главный экран, и мы можем получить Bundle appWidgetOptions из экземпляра AppWidgetManager.

 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]){ super.onUpdate(context, appWidgetManager, appWidgetIds); final int N = appWidgetIds.length; for (int i=0; i<N; i++) { int appWidgetId = appWidgetIds[i]; Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId); if(options!=null){ int nwidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH); int nheight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT); onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, options); } } } 
Intereting Posts
Исходный атрибут пользовательского адаптера исключает NullPointerException, когда переменные не равны нулю Как добавить интервал в RelativeLayout Изменение высоты и ширины EditText во время выполнения с некоторой анимацией Клавиатура над EditText при втором щелчке Есть ли простой фильтр «tee» для потоков Java? Запустить файл APK в Eclipse Сбой приложения Android при внесении изменений в базу данных Пользовательский календарный день в android Ярлык для переключения между дизайном и текстом в студии Android Написание PHP API и приложения для Android Шаблоны для разработки Android-игр? Использовать Parcelable с объектом с помощью Hashmap Элементы управления Youtube (воспроизведение / пауза) не работают после восстановления проигрывателя / активность возобновляется Android Dropbox API не сохраняет логин Как воспроизводить видео в android из папки с ресурсами или в необработанной папке?