Ist es möglich, programmgesteuert eine Absicht für APPWIDGET_UPDATE zu werfen?

Möchte einen Button in meinem Widget, um die APPWIDGET_UPDATE Absicht auf die Widget-Klasse zu erzwingen, um ein Update zu erzwingen, aber ich sehe nicht APPWIDGET_UPDATE als ein statisches Feld in Intent.

Ist das möglich, und wie würde man das tun?

  • Android Emulator scheint Audio auf 96khz aufzunehmen
  • Sharing Link auf WhatsApp von mobilen Website (nicht Anwendung) für Android
  • Com.android.volley.ParseError: org.json.JSONException
  • Android Emulator startet nicht mehr
  • Wie man String-Darstellungen von doppelten vergleicht, wenn es in .00 endet
  • Hinzufügen einer Aktionsleiste zur Listenaktivität
  • Intent intent = new Intent(context, BaseWidgetProvider.class); intent.setAction({APPWIDGET_UPDATE INTENT HERE}) PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.MyWidgetButton, pendingIntent); 

  • Retrofit Erwartete BEGIN_OBJECT aber war BEGIN_ARRAY
  • Holen Sie sich den Aktivitätsnamen dynamisch - android
  • EditText-Anforderungsfokus funktioniert nicht
  • Letztes Wort in einer Textansicht angezeigt
  • Unterschiede zwischen Jar, Android Library und Android Library Project
  • Server-seitige Überprüfung der Android Market Licensing Antworten mit PHP
  • 2 Solutions collect form web for “Ist es möglich, programmgesteuert eine Absicht für APPWIDGET_UPDATE zu werfen?”

    Ja , das ist möglich. Sie finden die Aktion in AppWidgetManager :

    Intent.setAction (AppWidgetManager.ACTION_APPWIDGET_UPDATE)

    Bearbeiten: Sie müssen die IDs der Widgets bereitstellen, die Sie aktualisieren möchten. Unten ist eine komplette Probe.

     AppWidgetManager widgetManager = AppWidgetManager.getInstance(context); ComponentName widgetComponent = new ComponentName(context, YourWidget.class); int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent); Intent update = new Intent(); update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds); update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); context.sendBroadcast(update); 

    Ich weiß, das ist eine sehr alte Frage, aber ich denke, das könnte interessant sein, denn Android hat die AppWidgets-Aktualisierungsrichtlinien aktualisiert. Ich denke, diese Veränderung könnte verhindern, dass die Existenz Antwort wie erwartet zu arbeiten.

    Das ist meine Lösung mit RemoteViews und einer Sammlung.

     public static final String ACTION_WIDGET_UPDATE = "com.yourpackage.widget.ACTION_UPDATE"; @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_WIDGET_UPDATE)) { int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0); AppWidgetManager.getInstance(context) .notifyAppWidgetViewDataChanged(widgetId, R.id.widgetColectionRoot); } super.onReceive(context, intent); } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); for (int widgetId : appWidgetIds) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { RemoteViews collectionRemoteView = getRemoteViews(widgetId, context); appWidgetManager.updateAppWidget(widgetId, collectionRemoteView); } } } @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) @SuppressWarnings("deprecation") private RemoteViews getRemoteViews(int widgetId, Context context) { // Sets up the intent that points to the RemoteViewService // that will // provide the views for this collection. Intent widgetUpdateServiceIntent = new Intent(context, RemoteViewsService.class); widgetUpdateServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId); // When intents are compared, the extras are ignored, so we need // to embed the extras // into the data so that the extras will not be ignored. widgetUpdateServiceIntent.setData( Uri.parse(widgetUpdateServiceIntent.toUri(Intent.URI_INTENT_SCHEME))); RemoteViews collectionRemoteView = new RemoteViews(context.getPackageName(), R.layout.widget_collection); collectionRemoteView.setRemoteAdapter(widgetId, R.id.widgetColectionRoot, widgetUpdateServiceIntent); collectionRemoteView.setEmptyView(R.id.widgetColectionRoot, R.id.widgetEmpty); // This section makes it possible for items to have // individualized behavior. // It does this by setting up a pending intent template. // Individuals items of a collection // cannot set up their own pending intents. Instead, the // collection as a whole sets // up a pending intent template, and the individual items set a // fillInIntent // to create unique behavior on an item-by-item basis. Intent selectItemIntent = new Intent(context, BrochuresWidgetProvider.class); Intent refreshIntent = new Intent(selectItemIntent); refreshIntent.setAction(ACTION_WIDGET_UPDATE); PendingIntent refreshPendingIntent = PendingIntent.getBroadcast( context, 0, refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT); collectionRemoteView.setOnClickPendingIntent(R.id.widgetReload, refreshPendingIntent); return collectionRemoteView; } 

    Natürlich müssen Sie auch diesen Intent-Filter auf deinem Manifest registrieren, in deiner Widget-Provider-Deklaration.

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.