2016-01-04 9 views
8

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.Gibt es eine Möglichkeit, ein Android-App-Symbol wie die Kalender-App dynamisch zu ändern?

Der Kalender ändert sein Symbol für jeden Tag mit dem Tag der Monatsnummer. Es gibt auch eine Wecker-App, die ihr Symbol ändert, indem sie die aktuelle Uhrzeit einstellt, dh jede Minute wechselt.

Das ist kein Widget, sondern ein echtes App-Symbol. Dann muss es einen Weg dazu geben. Wie kann ich es in meiner App tun?

+0

Entweder Sie betrachten ein App-Widget, oder was auch immer Ihr Startbildschirm ist, hat spezielle Haken für was auch immer Ihre Kalender-App ist. Im Allgemeinen können Apps ihre Symbole nicht aktualisieren. "aber meins ist anders" - dann erklären Sie bitte, ** im Detail **, was die anderen Fragen waren und warum Ihre Frage anders ist. – CommonsWare

+0

@CommonsWare Ich habe gerade meinen Text geändert. Wie Sie in der Frage sehen können, ist das kein Widget, sondern das App-Icon. Und es ändert sich im Home-Bildschirm und auch im Menü. –

+0

Dann, was auch immer Ihr Home-Bildschirm ist, hat spezielle Haken für was auch immer Ihre Kalender-App ist und was auch immer Ihre Wecker-App ist. Im Allgemeinen können Apps ihre Symbole nicht aktualisieren. – CommonsWare

Antwort

12

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?

Zum Beispiel kann Samsung 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 daran hindert, irgendeine Art von API zu veröffentlichen, die es Entwicklern ermöglicht, sich in Samsungs Home-Bildschirm einzuklinken und es über diese Art von Dingen zu informieren. Ob Samsung beabsichtigt für Dritte zu verwenden, dass API, oder ob es jemand ist, der hackt, wie Samsung es für ihre eigenen Apps tut, kann ich nicht sagen.

(BTW, ich bin unter Berufung auf Samsung hier als mögliches Beispiel - ich weiß nicht, dass sie tatsächlich haben, diese Art von Funktion, und wenn ja, auf welche Geräte sie es haben)

ich mich zu erinnern, dass jemand ein GitHub-Projekt hat, das versucht, die proprietären APIs verschiedener Homescreens zu umhüllen. IIRC, einige unterstützte Funktionen entweder Ersetzen des App-Symbol oder Hinzufügen eines Badge (z. B. ungelesene Nachricht Anzahl). Allerdings:

  • Nur ein kleiner Prozentsatz der Geräte werden diese proprietären APIs

  • Undocumented und nicht unterstützte APIs, entdeckt durch Reverse-Engineering-Anwendungen unterstützen, können Änderungen unterliegen und auf unerwartete Weise brechen

Ich bin ziemlich sicher, dass es im Android SDK nichts gibt, das dynamische App-Symbole unterstützt. Die einzige Sache, von der ich weiß, dass Leute versucht haben, benutzt <activity-alias>, um N verschiedene "Tätigkeiten" zu haben, die alle auf die gleiche Implementierung zeigen, aber unterschiedliche Ikonen haben. Unter Verwendung von PackageManager und setComponentEnabledSetting() deaktiviert die App den alten Launcher-Alias ​​und aktiviert einen anderen, in der Hoffnung, dass die Home-Bildschirme dies übernehmen und das neue Symbol anzeigen. Einige tun es. Andere würden nur bei einem Neustart von der Änderung erfahren.

Um das Problem umzudrehen, 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.

+0

Kühl !! Ich habe dich. Vielen Dank für die Erklärung. –

+0

Ich glaube nicht, dass das so ist. Zum Beispiel funktioniert das Kalendersymbol auch auf dem Arrow Launcher auf meinem Gerät. Es gibt bessere Lösungen, die zeigen, dass es mit verschiedenen Methoden möglich ist (keine offizielle). Eine davon ist: https://stackoverflow.com/a/19593601/2591556 – VipulKumar

+0

@commonsware Diese Funktion ist in Google Kalender auf Android Nougat und höher vorhanden. Die Frage ist _ist es für alle Entwickler verfügbar? –

2

Ich habe die gleiche Frage, aber die Antwort hier nicht beantwortet es.
Ich habe Google Pixel 2 mit rohem Android Ore 8.1 auf dem Brett und es gibt zwei Anwendungen, die im Laufe der Zeit ändern: Kalender und Uhr. Die Zeiger auf die Uhr Uhr App zeigen aktuelle Uhrzeit und die Nummer auf der Kalender Symbol entsprechen dem heutigen Datum des Monats.
Also 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 Symbol widerspiegelt. Oder Speicher-Reiniger, der Prozentsatz des verwendeten Speichers zeigt ...

+0

Diese Apps verwenden ein Widget, um es zu tun, da sie zeitlich aktualisiert werden. Wenn der Punkt jedoch nur das Symbol aus einem bestimmten Grund ändert, kann er mit '' erreicht werden. Ich habe das in meinem Projekt verwendet –

+0

Dies beantwortet nicht wirklich die Frage. Wenn Sie eine andere Frage haben, können Sie sie durch Klicken auf [Frage stellen] (https://stackoverflow.com/questions/ask) stellen. Sie können auch [Kopfgeld hinzufügen] (https://stackoverflow.com/help/privileges/set-bounties) hinzufügen, um mehr Aufmerksamkeit auf diese Frage zu lenken. - [Aus Bewertung] (/ review/low-quality-posts/18773717) – iklinac

+0

@LennonPetrick Widgets erscheinen nur auf dem Desktop, aber ich spreche auch über Launcher. Und das Hinzufügen eines Widgets zum Desktop ist anders als das Hinzufügen eines Icons. Ich bin 100% sicher, dass es kein Widget ist. –