Вот как я настраиваю свой виджет APP:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="240dp"
android:minHeight="193dp"
android:updatePeriodMillis="86400000"
android:initialLayout="@layout/xyz_appwidget"
android:configure="com.xyz.activity.Configuration"
/>
Следовательно, система будет активировать активность Configuration
, как только виджет будет помещен на рабочий экран пользователем. К сожалению, без использования конфигурации этот виджет не следует помещать на экран.
Я добавил несколько отладочных результатов. Это происходит, когда пользователь выбирает виджет для своего рабочего стола. Примечание: Это когда активна настройка, а не виджет.
I/ActivityManager( 101): Start proc com.xyz for broadcast com.xyz/.widget.xyz.XyzWidgetProvider: pid=14371 uid=10050 gids={3003, 1015}
D/XyzWidgetProvider(14371): onReceive: android.appwidget.action.APPWIDGET_ENABLED
D/XyzWidgetProvider(14371): onEnabled
D/XyzWidgetProvider(14371): onReceive: android.appwidget.action.APPWIDGET_UPDATE
Таким образом, даже если виджет не настроен, оба события (ENABLED, UPDATE) будут запущены. Включено имеет смысл для меня, но UPDATE явно нет. Особенно, когда операция Configuration
завершена успешно, никакого дополнительного события UPDATE не отправляется.
Я также прочитал, что, установив результат Configuration
на Activity.RESULT_CANCELED
, можно отменить процесс настройки. Но поскольку это явно работает асинхронно, я не знаю, как сделать процесс конфигурации блокировки? Кто-нибудь сталкивался с этим раньше?
Мое последнее замечание: я посмотрел в Виджет Android Gallery, который каким-то образом справляется с этим, так что не настроенный виджет галереи не будет добавлен. Но я подозреваю, что у HTC есть магия, так как журналы не очень полезны.