У меня проблемы с виджетами. Вот описание:
Контекст:
У меня есть домашний виджет.
Когда я добавляю его, появляется конфигурационное действие для установки некоторых параметров для виджета.
Если я вызываю setResult (RESULT_OK, resultValue); перед завершением действия по настройке виджет добавляется на главную.
Если я удалю виджет, перетащив его в корзину, public void onDeleted (Context context, Пока все хорошо.
Проблема: Если действие конфигурации завершается с кодом результата RESULT_CANCELED ( setResult (RESULT_CANCELED); ), public void onDeleted (Context context, int [] appWidgetIds) из моего класса AppWidgetProvider не вызывается и виджет остается в списке активных виджетов. Когда я перезагружаю телефон, вызывается onUpdate (Context context, AppWidgetManager appWidgetManager, int [] appWidgetIds) из моего класса AppWidgetProvider, а в int [] appWidgetIds у меня есть все виджеты (идентификаторы), которые должны быть отменены (удаляются перед добавлением) + активные (те, которые фактически отображаются на главной странице). Виджеты, которые были удалены путем перетаскивания в корзину, не отображаются в этом списке. Со временем этот список идентификаторов виджетов становится все больше и больше, если пользователь отменяет действие конфигурации. "Если вы вернете RESULT_OK с помощью Activity.setResult (), AppWidget будет добавлен, и вы получите широковещательную рассылку ACTION_APPWIDGET_UPDATE для этого AppWidget. Если вы вернете RESULT_CANCELED, хост отменит добавление и не отобразит этот AppWidget, и вы получите трансляция ACTION_APPWIDGET_DELETED. "
Кто-нибудь может мне подсказать? Спасибо.
Вот мой манифест:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<receiver android:name=".MytWidget" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_widget_provider" />
</receiver>
<activity android:name=".ConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
</application>
Остальная часть кода не имеет отношения, поскольку она была объяснена выше (и у меня нет разрешения на ее публикацию).