Wie man Widget-Größenänderungen auf Geräten fängt, wo onAppWidgetOptionsChanged nicht angerufen wird?

Geräte wie Samsung Galaxy S3, die mit Android Version 4.1.2 arbeiten, hat einen Bug, der verhindert, dass onAppWidgetOptionsChanged aufgerufen wird.

Also, wie können wir Informationen über veränderte Größen erhalten?

  • ImageView passen ohne Stretching das Bild
  • Wie man einen text über eine imageView setzt?
  • Wie kann man in NavigationsView geteiltes, kontrollierbares Verhalten über alle Gruppen festlegen?
  • Ausgabe mit aapt.exe
  • Was ist der beste Weg für ein Video in Android
  • Android-Fehler: Sie müssen das Layout_width-Attribut angeben
  • Hinzufügen von Leerzeichen zum Layout
  • Was ist generiert und vermittelt Ordner im Build-Verzeichnis und warum Ausgänge Ordner fehlt
  • Android Stringblock.get NullPointer Ausnahme auf Lollipop
  • Wie kann ich 3D-Modell über Google- oder iOS-Karten überlagern?
  • Android BroadcastReceiver kann keine Rundfunkereignisse empfangen
  • Android: Wenn Sie Dialog vs. Activity verwenden
  • 2 Solutions collect form web for “Wie man Widget-Größenänderungen auf Geräten fängt, wo onAppWidgetOptionsChanged nicht angerufen wird?”

    Ich führe Frankishs Antwort hinzu, wie ich damit umgehebe, diese Sendung zu erhalten:

    @Override public void onReceive(Context context, Intent intent) { // Handle TouchWiz if(intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE")) { handleTouchWiz(context, intent); } super.onReceive(context, intent); } private void handleTouchWiz(Context context, Intent intent) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); int appWidgetId = intent.getIntExtra("widgetId", 0); int widgetSpanX = intent.getIntExtra("widgetspanx", 0); int widgetSpanY = intent.getIntExtra("widgetspany", 0); if(appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) { Bundle newOptions = new Bundle(); // We have to convert these numbers for future use newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, widgetSpanY * 74); newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, widgetSpanX * 74); onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions); } } 

    Möglicherweise müssen Sie ändern, wie Sie dieses Bündel behandeln, wenn Sie MAX_HEIGHT oder MAX_WIDTH verwenden, was ich nicht bin.

    Ich habe entdeckt, dass du die RESIZE-Aktion in onReceive-Funktion fangen kannst.

     if(intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE")) 

    Du erhältst die folgenden Werte aus dem BeExtras () Bündel dieser Absicht:

     int appWidgetId = bundle.getInt("widgetId"); // bundle.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); int widgetSpanX = bundle.getInt("widgetspanx", 4); int widgetSpanY = bundle.getInt("widgetspany", 1); 

    Jetzt können Sie diese Werte verwenden, um die Ansicht zu aktualisieren oder sie in einer statischen Integer-Map-Variable zu speichern, die im nächsten OnUpdate verwendet werden soll.

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