Ich möchte eine Android-Anwendung erstellen, und ich möchte das App-Symbol dynamisch und automatisch aktualisieren, ähnlich wie das Kalendersymbol auf dem Startbildschirm eines Benutzers aktualisiert wird.
Der Kalender ändert sein Symbol für jeden Tag, der die Nummer des Monats anzeigt. Es gibt auch eine Wecker-App, die ihr Icon ändert, indem sie die aktuelle Zeit einstellt, dh jede Minute wechselt.
Das ist kein Widget, sondern ein echtes App-Icon. Dann muss es einen Weg dazu geben. Wie kann ich es in meiner App tun?
Was auch immer Ihr Home-Bildschirm ist, hat spezielle Haken für was auch immer Ihre Kalender-App und was auch immer Ihre Wecker-App ist. Im Allgemeinen können Apps ihre Symbole nicht aktualisieren.
Was meinst du mit Haken?
Samsung kann beispielsweise eine Samsung-Kalender-App auf Samsung-Geräten versenden. Samsungs Home-Bildschirm auf denselben Samsung-Geräten kann spezielle Regeln zum Rendern eines Symbols für die Samsung Kalender-App enthalten, Regeln, die die Anzeige des Tages des Monats beinhalten. Dies liegt daran, dass Samsung den Startbildschirm geschrieben hat. Wenn Sie den Startbildschirm eines Drittanbieters installieren, wird möglicherweise nicht dasselbe ausgeführt. Schließlich kann ich in etwa einer Stunde einen Homescreen schreiben, und ich bin ziemlich zuversichtlich, dass ich für die Kalender-App von Samsung nichts Besonderes machen muss.
Es gibt nichts, was Samsung davon abhält, irgendeine Art von API zu veröffentlichen, um es Entwicklern zu erlauben, sich in Samsungs Home-Bildschirm einzuklinken und es über diese Art von Dingen zu informieren. Ob Samsung beabsichtigt für Dritte, diese API zu nutzen, oder ob es jemand ist, der weiß, wie Samsung es für seine eigenen Apps macht, kann ich nicht sagen.
(Übrigens, ich zitiere hier Samsung als ein mögliches Beispiel - ich weiß nicht, dass sie tatsächlich diese Art von Funktion haben, und wenn ja, auf welchen Geräten sie es haben)
Ich erinnere mich, dass jemand ein GitHub-Projekt hat, das versucht, die proprietären APIs verschiedener Home-Screens einzubinden. IIRC, einige unterstützte Funktionen entweder Ersetzen des App-Symbol oder Hinzufügen eines Badge (z. B. ungelesene Nachricht Anzahl). Jedoch:
Nur ein kleiner Prozentsatz der Geräte unterstützt diese proprietären APIs
Undokumentierte und nicht unterstützte APIs, die durch Reverse-Engineering-Apps erkannt wurden, können sich ändern und können auf unerwartete Art und Weise durchbrochen werden
Ich bin mir ziemlich sicher, dass im Android SDK nichts enthalten ist, das dynamische App-Symbole unterstützt. Das einzige, was ich weiß, dass Leute versucht haben, verwendet <activity-alias>
, um N verschiedene "Aktivitäten" zu haben, die alle auf die gleiche Implementierung zeigen, aber unterschiedliche Symbole haben. Mit PackageManager
und setComponentEnabledSetting()
deaktiviert die App den alten Launcher-Alias und aktiviert einen anderen, in der Hoffnung, dass Homescreens dies übernehmen und das neue Icon anzeigen. Einige tun es. Andere würden nur über die Änderung bei einem Neustart erfahren.
Um das Problem umzukehren, kann ich einen Startbildschirm schreiben. Vielleicht möchte ich Apps einen Weg bieten, ihre Icons im laufenden Betrieb zu ändern, obwohl es dafür keine Standards gibt. Vielleicht nicht. Vielleicht beabsichtige ich gar nicht, Icons zu verwenden, da mein Home-Bildschirm für Sehbehinderte optimiert ist, und so verwendet er Text-to-Speech- und Hardwareschlüssel-Eingaben. Es ist meine Home-Screen-Implementierung, und ich kann tun, was ich will.
Ich habe die gleiche Frage, aber die hier gegebene Antwort bestreitet sie nicht.
Ich habe Google Pixel 2 mit roher Android Ore 8.1 auf dem Board und es gibt zwei Apps, die sich im Laufe der Zeit ändern: Kalender und Clock . Die Zeiger der Uhr Uhr zeigen die aktuelle Uhrzeit an und die Zahl auf dem Kalender Symbol entspricht dem heutigen Datum des Monats.
Unter Berücksichtigung, dass es Standard-Launcher ist wahrscheinlich gibt es einige API, um ähnliche Dinge zu tun.
Zum Beispiel könnte es die planetarische App sein, die die Positionen der Planeten auf dem Icon widerspiegelt. Oder Speicherbereinigung, die den Prozentsatz des verwendeten Speichers anzeigt ...
Sogar in der App-Schublade von Android O zeigt das Uhr-App-Symbol die aktuelle Uhrzeit und das Kalender-App-Symbol den aktuellen Tag des Monats an.
Chris Lacy, der Entwickler hinter dem bekannten Action Launcher, hat etwas in der APK-Datei der Uhr-App von Android O entdeckt: Die manifest.xml erwähnt Stunden, Minuten und Sekunden als Ebenen mit Standardwerten, und das Symbol hat separate Bilder für den Hintergrund und verschiedene Elemente.
Daraus folgerten wir logischerweise, dass ab Android O das Symbol der Uhr-App animiert wird, um die aktuelle Uhrzeit anzuzeigen. Das passiert sowohl, wenn die Uhr als eine Abkürzung auf dem Homescreen platziert wird und wenn sie in der App-Schublade ist.
Es klingt, als ob der Pixel-Launcher je nach Zeit und Datum verschiedene Icon-Image-Layer-Ressourcen auswählt.
Tags und Links android dynamic icons android-calendar