Подтвердить что ты не робот

Удаление программных приложений AppWidgets

У меня сложнее всего выяснить, как программно удалить AppWidget на главном экране (т.е. без перетаскивания одного пользователя в корзину). В качестве примера рассмотрим приложение, которое может иметь несколько учетных записей, с любым количеством виджетов для каждой учетной записи - после удаления учетной записи виджет также должен быть удален.

Я пробовал следовать неясному примеру из http://www.netmite.com/android/mydroid/cupcake/frameworks/base/services/java/com/android/server/AppWidgetService.java, но, похоже, он даже не запускает OnDeleted, а тем более удаляет AppWidget с главного экрана.

Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_DELETED);
intent.setComponent(info.componentName); // references AppWidgetProvider class
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
sendBroadcast(intent);

Есть ли у кого-нибудь советы о том, как это можно сделать? Примером могут быть пчелиные колени. Спасибо.

4b9b3361

Ответ 1

Вы не можете добавлять или удалять виджеты приложений с главного экрана. Только пользователь может это сделать.

Любые виджеты приложений, привязанные к удаленной учетной записи, могут отображать другую учетную запись или использовать некоторый "(удаленный аккаунт)", который заставит пользователя избавиться от виджета приложения или перенастроить его.

Ответ 2

Я уверен, что это должно сработать:

int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName("com.example",
                        "com.example.Widget"));
AppWidgetHost host = new AppWidgetHost(ctx, 0);
host.deleteAppWidgetId(appWidgetIds[0]);