widgets tutorial android android-appwidget

tutorial - android widgets



AppWidgetManager getAppWidgetIds que devuelve los ID de widgets antiguos (1)

Estoy tratando de obtener una lista de todas las instancias ACTIVAS de mi widget. En el método OnUpdate de mi AppWidgetProvider, estoy haciendo lo siguiente:

// Get all ids ComponentName thisWidget = new ComponentName(context, this.getClass()); int[] lastWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

El problema es que si agrega un widget a su pantalla de inicio y luego lo elimina, getAppWidgetIds sigue devolviendo una lista que contiene, entre otros, el ID del widget que acaba de eliminar.

¿Hay alguna forma de recuperar los identificadores de solo los widgets que están activos en la pantalla de inicio?


Me encontré con esto también. Supongo que getAppWidgetIds está simplemente programado para obtener siempre todos los ID asociados con ese proveedor de widgets. Para resolver esto, tuve que guardar el ID de widget en mis preferencias compartidas guardando el ID en el método onUpdate y eliminándolo en el método onDelete de mi AppWidgetProvider.

public class MyProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Update your widget as normal // If the Id isn''t already saved to your db/app preference, save it now } public void onDeleted (Context context, int[] appWidgetIds) { // Remove each id passed in through appWidgetIds // "un-save" them from your db or app preferences } }