Programmaticamente aggiorna il widget da attività / servizio / ricevente

So che è ansible, ma non riesco a capire un modo per triggersre un aggiornamento del mio widget dall'attività principale. Non ci sono alcune intenzioni generali che posso trasmettere?

  • Aggiunta dynamicmente di elementi di griglia in visualizzazione griglia
  • sd.canWrite () restituisce sempre false
  • Termina tutte le attività alla volta
  • Come distruggere il frammento?
  • Avere le pagine verticalmente scorrenti in ViewPager
  • Come sapere che l'attività è stata finita?
  • TextColor in Android XML non funziona?
  • Nome del pacchetto variabile con Maven Android Plugin
  • evento di incendio della spina android quando la stessa selezione degli oggetti viene fatta
  • L'allarme esatto di Android è sempre di 3 minuti
  • Mettere le autorizzazioni a manifestare il progetto di libreria Android .aar
  • Come risolvere questo errore VFY: imansible risolvere il metodo virtuale
  • 7 Solutions collect form web for “Programmaticamente aggiorna il widget da attività / servizio / ricevente”

    Se si utilizza un AppWidgetProvider, è ansible aggiornarlo in questo modo:

    Intent intent = new Intent(this,MyAppWidgetProvider.class); intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); // Use an arrays and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID, // since it seems the onUpdate() is only fired on that: int[] ids = {widgetId}; intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids); sendBroadcast(intent); 

    Questo ha aiutato quando ho cercato su come aggiornare un widget da un servizio / azione (ma può essere ansible da each context):

     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); 

    Quindi, per aggiornare un widget da un'attività, puoi eseguirlo in questo modo:

     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); 

    Per me va bene 🙂

    Prova questo:

     int[] ids = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), MyWidget.class)); MyWidget myWidget = new MyWidget(); myWidget.onUpdate(this, AppWidgetManager.getInstance(this),ids); 
     int widgetIDs[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), WidgetProvider.class)); for (int id : widgetIDs) AppWidgetManager.getInstance(getApplication()).notifyAppWidgetViewDataChanged(id, R.id.widget_view); } 

    Se si lavora con un widget che utilizza una raccolta come ListView, GridView o StackView, per aggiornare gli elementi del widget, procedere come segue:

     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 questo metodo notifyAppWidgetViewDataChanged (), è ansible forzare gli elementi del widget per recuperare i nuovi dati in tempo reale.

    Basta get un'istanza AppWidgetManager e aggiornarla direttamente. Oppure, se si utilizza un IntentService per eseguire gli aggiornamenti, call startService() su IntentService . L' AppWidgetProvider è un modo per aggiornare il widget dell'app, ma non è l'unico modo.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.