Ich füge zu fränkischer Antwort mit, wie ich diese Sendung Griff Empfang:
@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 handhaben, wenn Sie MAX_HEIGHT oder MAX_WIDTH verwenden, die ich nicht bin.
"oder speichern Sie sie in einer statischen Integer-Map-Variable" - dies wird nicht zuverlässig sein, da Ihr Prozess zwischen der 'com.sec.android.widgetapp.APPWIDGET_RESIZE' Broadcast und jedem nachfolgenden' onUpdate() beendet werden kann Ruf an. Nun kann es funktionieren, dass Samsungs modifizierter Code eine 'onUpdate()' sehr kurz nach 'com.sec.android.widgetapp.APPWIDGET_RESIZE' auslöst, in welchem Fall statische Datenmitglieder in der Praxis funktionieren. – CommonsWare
@CommonsWare danke, Sie können Recht haben. Es wird OnUpdate nicht automatisch ausgelöst, daher sende ich ein Update, wenn die neue Größe nicht die gleiche ist, die ich in der statischen Variable gespeichert habe. Für die statische Variable: App wird automatisch gestartet, um onReceive aufzurufen. Daher wird diese statische Variable immer festgelegt. Wenn es zu diesem Zeitpunkt getötet wird, ist es wahrscheinlich durch einen Absturz verursacht und es sollte sowieso nicht abstürzen .. andernfalls können wir das Widget nicht aktualisieren. Fehle ich etwas? : | Übrigens können wir immer direkt von der Empfangsfunktion updaten, wenn es uns egal ist, ob die Größe gleich ist oder nicht. – frankish