Android appwidget no se actualizará desde la actividad
Tengo un appwidget simple y quiero actualizarlo cuando ocurre una acción en una actividad (en la misma aplicación). En onUpdate (), inmediatamente actualizar el widget, que funciona bien. En mi actividad, llamo al mismo método de actualización estática en mi appwidget que se llama en onUpdate () para actualizar las vistas. El widget no se actualiza.
Puedo rastrear el código justo en el método AppWidgetManager.updateAppWidget (), y todo esto bien, pero el widget no se actualiza.
- ¿Cómo puedo crear un widget de aplicación de paginación de Android compatible con versiones anteriores?
- Control de medios en la pantalla de bloqueo como Google Play Música en Android?
- Widget de la aplicación en Android con conexión de red
- ¿Cómo obtener la lista de widgets instalados?
- AppWidget no se muestra en la lista de widgets de lanzador en dispositivos de lollipop solamente
La única diferencia posible que puedo ver es que el objeto de contexto pasado en mi método de actualización estática es diferente, cuando se llama desde el contexto de una actividad frente al contexto del método onUpdate () de un appwidget. Sin embargo, hay muchos ejemplos en la web de este así que espero que debería funcionar.
- Problemas con appwidget appWidgetIds (instancias reales y fantasmas de widget)
- Manejo de varias instancias de appwidget
- Widget de la aplicación de Android listview onclick listener
- Obtener dimensiones redimensionables appwidget (o moverse alrededor)
- AsyncTask para actualizar widget - cómo acceder a textviews en onPostExecute ()?
- 4x4 appwidgets se detectan como 3x3 en las tabletas
- RemoteViewsFactory grantUriPermission para obtener datos
- Obtener otras aplicaciones icono uri?
Sin ver tu código no estoy 100% seguro de cómo estás tratando de hacerlo, sin embargo aquí está el método que uso. Dentro de mi Activity
tengo el siguiente método:
private void updateAllWidgets(){ AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(this, MyWidget.class)); if (appWidgetIds.length > 0) { new MyWidget().onUpdate(this, appWidgetManager, appWidgetIds); } }
Donde MyWidget
es la clase del appwidget. Puedo llamar a este método desde cualquier lugar dentro de mi Activity
para actualizar todos mis appwidgets.
En lugar de utilizar un método estático aprovechar el hecho de que el widget ya es un receptor de difusión y registrar una intención de actualización en su manifiesto. Luego, cada vez que necesite actualizarlo desde la actividad, simplemente llame al
//in your activity sendBroadcast(new Intent(MyWidget.ACTION_UPDATE).putExtra(whatever)); //In widget class public static final String ACTION_UPDATE = "com.example.UPDATE_MY_WIDGET";
Y dentro de las etiquetas del receptor de su archivo de manifiesto
<intent-filter> <action android:name="com.example.UPDATE_MY_WIDGET"/> </intent-filter>
- Proguard Retrace no funciona con información de tiempo de ejecución de stacktrace como E / AndroidRuntime (10237):
- Adición de marcadores múltiples en Google Maps API v2 Android