AppWidgetManager.getAppWidgetIds en la actividad devuelve una lista vacía

Tengo un appwidget que estoy intentando actualizar de una actividad.

Para hacer eso, necesito el id appwidget.

He utilizado AppWidgetManager.getAppWidgetIds pero siempre devuelve una lista vacía.

También utilicé AppWidgetManager.getInstalledProviders para cerciorarse de que mi ComponentName es correcto, pero todavía consigo una lista vacía.

He visto todas las otras preguntas sobre esto, pero no pude encontrar algo que funcionó para mí.

¿Hay otra manera de resolver esto? u otra forma de actualizar el widget?

Mi código:

 ComponentName name = new ComponentName(packageName, boardcastReceiverClass); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); int[] ids = appWidgetManager.getAppWidgetIds(name); if (ids != null && ids.length > 0) { getApplicationContext().sendBroadcast(getUpdateIntent(ids[0])); } 

Gracias.

UPDATE: Debo mencionar que mi AppWidgetProvider está en un proyecto de biblioteca. De acuerdo con el ComponentName que obtuve con getInstalledProviders , usé el nombre del paquete de mi aplicación y el nombre de la clase con el nombre del paquete de la biblioteca.

3 Solutions collect form web for “AppWidgetManager.getAppWidgetIds en la actividad devuelve una lista vacía”

Puedes acceder a tu widget sin saberlo

 appWidgetManager.updateAppWidget(new ComponentName(this.getPackageName(),Widget.class.getName()), views); 

Esto le permite acceder al widget sin tener que conocer el 'appWidgetID'. Entonces en actividad:

 Intent intent = new Intent(this, Settings.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); views.setOnClickPendingIntent(R.id.btnActivate, pendingIntent); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); appWidgetManager.updateAppWidget(new ComponentName(this.getPackageName(), Widget.class.getName()), views); finish(); 

Para obtener la ID del widget de la aplicación … utilice este código a continuación

onReceive () use este código debajo

 int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

en onUpdate () obtendrá la lista de ids como parámetro!

Si desea actualizarlo desde la actividad, utilice este

  Intent intent = new Intent(this, [activityname].class); intent.setAction("android.appwidget.action.APPWIDGET_UPDATE"); int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), [activityname].class)); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids); sendBroadcast(intent); 

Estoy trabajando en algo similar y aquí es la manera más simple que conseguí que funcione.

En su clase de servicio, coloque esto donde desee activar una actualización de widget:

 Intent brIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); sendBroadcast(brIntent); 

Esto hará que el método onReceive (Context context, Intent intention) en su clase AppWidgetProvider sea llamado. Entonces onRecieve puede llamar al código para actualizar el widget. Para una muestra, esto es lo que usé. Simplemente estoy actualizando el texto del widget:

  //Sample output text String text = "My cat's name is wiggles."; //get an AppWidgetManager AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); //getComponentName ComponentName thisWidget = new ComponentName(context, MyWidgetProvider.class); //get the IDs for all the instances of this widget int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); //update all of the widgets for (int widgetId : allWidgetIds) { //get any views in this instance of the widget RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); // Set the text remoteViews.setTextViewText(R.id.widgetField, text); //update the widget with any change we just made appWidgetManager.updateAppWidget(widgetId, remoteViews); } 
  • Android: pruebas de instumentación para widgets de aplicaciones
  • Android operación de larga duración para actualizar un appwidget
  • Widget de la aplicación en Android con conexión de red
  • Método Android AppWidgetManager getAppWidgetIds que devuelve matriz vacía
  • Artículos duplicados en el widget GridView
  • Actualización de AppWidget
  • Utilizar two pendingIntent en una vista en Appwidget
  • RemoteViewsFactory grantUriPermission para obtener datos
  • Android Widget con ListView que muestra sólo vistas de carga
  • ¿Por qué no se actualiza mi widget de aplicación en API 3 o 4?
  • El widget de la aplicación de Android se bloquea después de un período de tiempo indefinido
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.