AppWidgetManager getAppWidgetIds devolviendo identificadores de Widget antiguos
Estoy tratando de obtener una lista de todas las instancias de ACTIVE 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 agregas un widget a tu pantalla de inicio y lo eliminas, getAppWidgetIds devuelve una lista que contiene entre otras el ID del widget que acabas de eliminar.
- ¿Por qué mi administrador de alarmas de Android está disparando al instante?
- La vida útil de AppWidget ID
- Cómo cargar elementos en el widget de vista de lista de inicio de android?
- 4x4 appwidgets se detectan como 3x3 en las tabletas
- Evitando el error FALLED BINDER TRANSACTION al actualizar muchos mapas de bits de widget
¿Hay una manera de recuperar los identificadores de sólo los widgets que están activos en la pantalla de inicio?
- Widget de la aplicación: ¿puedes especificar un tamaño mínimo y un tamaño predeterminado?
- Qué tamaños usar para un appwidget 4x2
- ListView en el widget agrega aleatoriamente los elementos en el desplazamiento y el cambio de tamaño (vistas remotas anidadas)
- Método Android AppWidgetManager getAppWidgetIds que devuelve matriz vacía
- ¿Cómo observar el cambio contentprovider? androide
- Cómo cambiar el tamaño del texto en función del tamaño del widget en un textview en un appwidget?
- Android appwidget no se actualizará desde la actividad
- Cómo influenciar linebreak en Android Textview
Me encontré con esto también. Supongo que getAppWidgetIds está simplemente programado para obtener siempre todos los identificadores asociados con ese proveedor de widgets. Para solucionar esto, tuve que guardar el ID de Widget a 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 } }
- Se ha producido un error en la ejecución de la prueba: La ejecución de la instrumentación ha fallado debido a 'java.lang.ClassNotFoundException'
- ¿La aplicación móvil HTML5 se está ejecutando mientras la pantalla del teléfono está desactivada?