Check-Widget wird auf Android-Bildschirm platziert

7

Kann mir jemand sagen, wie ich überprüfen kann, ob mein Widget auf dem Startbildschirm platziert wurde?

Ich habe Code in meiner App, der nur ausgeführt werden sollte, wenn das Widget auf dem Startbildschirm platziert wird.

    
Jeff 12.01.2012, 14:31
quelle

4 Antworten

6

Sie müssen diese Informationen selbst speichern. Normalerweise verwende ich die Anwendungspräferenzen, aber Sie können alles verwenden. Im Allgemeinen verwenden Widgets Dienste, um zu kommunizieren. Ihr Code, der solche Aufgaben erledigt, befindet sich wahrscheinlich in einem Dienst, aber wenn Sie diese Einstellung verwenden, kann jeder Teil Ihrer App darauf zugreifen.

In Ihrer Widget-Klasse, die AppWidgetProvider erweitert, wird onEnabled aufgerufen, wenn das Widget auf einem Homescreen platziert wird und das onDeleted (normalerweise) aufgerufen wird, wenn es entfernt wird. onDisabled wird aufgerufen, wenn alle Kopien entfernt wurden.

Also im Code Ihres Widget-Providers:

%Vor%

An anderer Stelle im Code würden Sie prüfen, ob das Widget aktiv ist:

%Vor%     
larsona1 12.01.2012, 15:27
quelle
37

Ich sage nur, aber ...

%Vor%     
Waza_Be 26.04.2013 18:47
quelle
5

Ich weiß, es ist eine alte Frage, aber als ich dies heute ansah, sah ich, dass es ein paar Probleme mit der akzeptierten Antwort von @ larsona1 gibt:

  1. Wenn der Benutzer die freigegebenen Einstellungen gelöscht hat - es gibt immer noch ein Widget, aber die App weiß nichts darüber.
  2. wenn der Benutzer bereue, zwischen "Widget hinzufügen" und vor dem Drücken von "ok" - onEnabled wird trotzdem aufgerufen, und ein Widget wird auf dem Startbildschirm registriert, obwohl es kein Widget gibt, und keine Möglichkeit, es später zu entfernen. (Es könnte ein Fehler im ADT Home Launcher sein.)

Ich habe eine Lösung für das erste Problem gefunden. Es sind überhaupt keine gemeinsamen Präferenzen erforderlich, da es ohnehin unzuverlässig ist. Es muss in Runtime überprüft werden.

%Vor%

In Ihrem Widgetanbieter:

%Vor%

Und fügen Sie in Ihrem Servicecode Folgendes hinzu:

%Vor%     
auval 05.08.2012 09:43
quelle
1

@Waza_Be ist richtig, wenn Sie sich die "AppWidgetIds" -Liste ansehen, um die Anzahl der aktiven Widgets (die auf Ihrem Startbildschirm installierten) zu kennen, ist der richtige Weg, diese Informationen zu kennen.

Beachten Sie jedoch, dass Sie sich das nicht alleine ansehen sollten.

Sehen Sie in der offiziellen Android-Dokumentation nach, wie Widgets am besten funktionieren: Ссылка

Der richtige Ansatz besteht darin, nur die onUpdate () -Methode zu überschreiben und die Liste der "aktiven" Widgets zu durchlaufen:

%Vor%

Und wenn Ihr eigener Widget-Provider AppWidgetProvider überschreibt, werden Sie NICHT zur onUpdate () -Methode gehen, wenn auf dem Startbildschirm keine Widgets aktiv sind!

Siehe den onReceive () - Code von Android AppWidgetProvider, der für Sie bereits überprüft, dass "appWidgetIds.length & gt; 0":

%Vor%     
TooLiPHoNe.NeT 04.09.2015 12:51
quelle

Tags und Links