sé que es posible, pero no puedo encontrar una manera de desencadenar una actualización de mi widget de la actividad principal. ¿No hay alguna intención general que pueda transmitir?programación widget de actualización de la actividad/servicio/receptor
Respuesta
Si son utilizando un AppWidgetProvider
, se puede actualizar esta manera:
Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = AppWidgetManager.getInstance(getApplication())
.getAppWidgetIds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
acaba de obtener una instancia AppWidgetManager
y actualizar directamente. O bien, si está utilizando un IntentService
para hacer las actualizaciones, llame al startService()
en el IntentService
. El AppWidgetProvider
es un modo de actualizar el widget de la aplicación, pero no es la única.
Soy nuevo en el sistema Android, ¿tiene un ejemplo de código rápido de su solución? – Kratz
@Kratz: ¿Rápido? No. Ejemplo? Sí: http://github.com/commonsguy/cw-andtutorials/tree/master/34-AdvAppWidget/LunchList/ – CommonsWare
Esto ayudó cuando busqué en cómo actualizar un widget de un servicio/o acción (pero puede ser posible a partir de cada contexto):
Context context = this;
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_2x1);
ComponentName thisWidget = new ComponentName(context, MyWidget.class);
remoteViews.setTextViewText(R.id.my_text_view, "myText" + System.currentTimeMillis());
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
muy útil, gracias señor :) –
Esto debe ser aceptada como la respuesta en mi humilde opinión –
Sé que soy saltando aquí como 6 meses tarde. Pero estoy de acuerdo con Andrew. Probé el método original en este hilo. Y algo sobre cómo se agarran los identificadores hizo que comenzara a fallar. Este método (de actualizar directamente los campos manualmente) funciona mejor. Para mis propósitos, al menos. – durbnpoisn
int widgetIDs[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), WidgetProvider.class));
for (int id : widgetIDs)
AppWidgetManager.getInstance(getApplication()).notifyAppWidgetViewDataChanged(id, R.id.widget_view);
}
Requiere nivel min-api: 11. –
Impresionante. Ni siquiera tiene que buclear, hay una versión de 'notifyAppWidgetViewDataChanged()' que toma una matriz. –
Así que para actualizar un widget desde una acti vidad, puede hacerlo de esta manera:
Intent intent = new Intent(this, DppWidget.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), DppWidget.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
Obras para mí :)
Llama al método onRecieve override. Pero quiero llamar al método Update. –
luego pruebe esto https://stackoverflow.com/a/4412949/6538897 – Idee
Prueba esto:
int[] ids = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), MyWidget.class));
MyWidget myWidget = new MyWidget();
myWidget.onUpdate(this, AppWidgetManager.getInstance(this),ids);
Sorprendentemente, solo esta pequeña respuesta lo resolvió. Todavía no sé las implicaciones de crear una instancia de la clase de Widget y llamar directamente al método onUpdate, pero bueno, finalmente funciona :) –
La respuesta aceptada no funcionó ... Lo probaré. – Si8
@ Si8 ¡Funciona como un encanto! –
En caso de que usted está trabajando con un widget que utiliza una colección como ListView , GridView, o StackView, para actualizar los elementos del widget, hacer de la siguiente manera:
Context context = getApplicationContext();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, StackWidgetProvider.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.stack_view);
con este método notifyAppWidgetView DataChanged(), puede forzar a los elementos del widget a buscar cualquier dato nuevo en tiempo real.
Esto en realidad era exactamente lo que estaba buscando. ¡Gracias! – user1806772
- 1. Haciendo la actualización del widget de la etiqueta python/tkinter?
- 2. Actualización del widget de aplicación usando AlarmManager
- 3. Cómo deshabilitar la entrada a un widget de texto, pero ¿permite la entrada de programación?
- 4. Actualización del widget Qt más tarde, pero ¿cuándo?
- 5. ¿La mejor manera de cambiar el ancho/alto de un widget mediante programación?
- 6. ¿hay alguna manera de obtener la velocidad de actualización de la pantalla mediante programación?
- 7. La actualización de ObjectName del widget no actualiza el estilo automáticamente
- 8. Acceso a instancia del widget de widget de fuera
- 9. ¿Puedo deshabilitar un panel de actualización mediante programación?
- 10. Actualice el ID de widget de Android actual en el método de actualización
- 11. Avances de programación de Drupal 7, diferencias con la actualización de Drupal 6 o espera
- 12. Widget de actualización de Android desde un botón haga clic en
- 13. Android Widget: muestra la actividad de configuración antes de agregar el widget a la pantalla
- 14. QWidget actualización de eventos pero no actualización visual
- 15. Ejecutar Android Widget de la actividad
- 16. Android - widget de acordeón
- 17. Widget de ProgressBar personalizado
- 18. Actualización de una matriz multidimensional en PHP
- 19. Actualizando la pantalla desde un widget?
- 20. Widget de pantalla completa
- 21. GWT widget de búsqueda
- 22. Android Widget Not Updating
- 23. Cómo Widget dentro de otro widget en QT?
- 24. ¿Dónde se guardan las preferencias de Widget Widget?
- 25. ¿La programación funcional es un subconjunto de la programación imperativa?
- 26. ¿Widget de calendario de Django?
- 27. Actualización de la tabla en el desencadenante después de la actualización en la misma tabla
- 28. Principiante: widget de anulación Django ModelForm
- 29. Android Widget de mapa de bits Tamaños
- 30. En la declaración de actualización de Oracle SQL, ¿la actualización de filas ocurre al mismo tiempo?
aplausos que funcionaron perfectamente. –
¿Dónde configura 'widgetId'? –
¿AppWidgetProvider ejecuta luego el método onUpdate()? –