¿Por qué no se actualiza mi widget de aplicación en API 3 o 4?

Estoy trabajando en un widget de Android y funciona muy bien en API de nivel 5 o superior. No es compatible en absoluto en API Nivel 1 o 2. Debe funcionar absolutamente bien en 3 y 4, pero por alguna razón el widget no se actualiza.

El método onUpdate se llama y se ejecuta sin errores; Sin embargo, en 3 y 4 no cambia el texto del widget. Estoy bastante perdido. ¿Alguna idea?

@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); DataAccess helper = new DataAccess(context); String text = helper.getCurrentText(); helper.close(); if (text != null) views.setTextViewText(R.id.widget_text, text); Intent intent = new Intent(context, WidgetDetailsActivity.class); PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.widget, pending); appWidgetManager.updateAppWidget(appWidgetIds, views); } 

Prueba esto:

Al final de su método de actualización necesita llamar al super.

 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); DataAccess helper = new DataAccess(context); String text = helper.getCurrentText(); helper.close(); if (text != null) views.setTextViewText(R.id.widget_text, text); Intent intent = new Intent(context, WidgetDetailsActivity.class); PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.widget, pending); appWidgetManager.updateAppWidget(appWidgetIds, views); super.onUpdate(context, appWidgetManager, appWidgetIds); } 

Necesitas iniciar el servicio en el método de actualización y poner todo tu código en servicio también, aquí doy enReceive y service demo context.startService(new Intent(context, UpdateService.class));

 public static class UpdateService extends Service { @Override public void onStart(Intent intent, int startId) { // Build the widget update for today RemoteViews updateViews = buildUpdate(this); // Push update for this widget to the home screen ComponentName thisWidget = new ComponentName(this, Widget.class); AppWidgetManager manager = AppWidgetManager.getInstance(this); manager.updateAppWidget(thisWidget, updateViews); } @Override public IBinder onBind(Intent intent) { return null; } } @Override public void onReceive(Context context, Intent intent) { final RemoteViews remoteViews = buildUpdate(context); ComponentName cn = new ComponentName(context, Widget.class); AppWidgetManager.getInstance(context).updateAppWidget(cn, remoteViews); super.onReceive(context, intent); } 

Donde buildUpdate es un método para que tu widget actualice el código

  • Convertir archivos C ++ (.h y .cpp) existentes en java para Android
  • Incapaz de reemplazar / navegar fragmentos
  • ¿Cómo obtener la altura y el ancho del dispositivo en Runtime?
  • Aplicación de Android que se conecta a un servicio web - no funciona
  • ¿Qué es exactamente getGlobalVisibleRect ()?
  • NoClassDefFoundError al ejecutar el ejemplo oficial de Facebook
  • ¿Cómo se determinan los valores de identificador de recursos en Android?
  • Jeta: Cómo crear procesadores de anotación personalizados
  • Descompilar un APK, modificarlo y volver a compilarlo
  • Vista Lista expandible - Childs, Diferentes diseños
  • Android: ¿Una forma sencilla de hacer una geofence?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.