Badge Icon für eigenen Launcher?

B

behemel

Neues Mitglied
Threadstarter
Hi Leute,

ich mache einen Android-Launcher. Er ist eigentlich schon fertig. Ich hätte nur gern auf dem Home-Screen bei den App-Icons kleine Nummern (Badge Icons). So sieht man z.B bei Facebook, WhatsApp etc wenn neue Nachrichten angekommen sind, weiß jemand wie das geht? Hab schon folgendes probiert aber nichts funktioniert davon:

Manifest:

<receiver android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.sonyericsson.home.action.UPDATE_BADGE"/>
<action android:name="android.intent.action.BADGE_COUNT_UPDATE"/>
</intent-filter>
</receiver>


BroadCastReceiver:

public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@override
public void onReceive(Context context, Intent intent) {

StringBuilder sb = new StringBuilder();
sb.append("Action: " + intent.getAction() + "\n");
sb.append("URI: " + intent.toUri(Intent.URI_INTENT_SCHEME).toString() + "\n");
sb.append("App: " + intent.getStringExtra("badge_count_package_name") + "\n");
sb.append("Class: " + intent.getStringExtra("badge_count_class_name") + "\n");
sb.append("Count: " + intent.getStringExtra("badge_count") + "\n");
String log = sb.toString();
System.out.println(TAG + log);

}
}
 
swa00

swa00

Moderator
Teammitglied
Hallo , das geht nicht so einfach , wie du das oben umgesetzt hast .

Es ist auch zum größten Teil Device und Betriebssystem abhängig und erfordert mehr als nur ein Intent oder Broadcast.
Desweitern musst du die external App Icons auswechseln

Siehe auch hierzu auch als Beispiel
leolin310148/ShortcutBadger

Daraus kannst du die Technik gut ableiten
 
Zuletzt bearbeitet:
B

behemel

Neues Mitglied
Threadstarter
Danke schonmal für die Antwort. aber ich glaube, dieser Shortcut-Badget macht wieder genau das Gegenteil:

Wenn ich eine App habe und das App-Icon auf dem HomeScreen ist, kann ich ein kleines Symbol an dem HomeScreen-Icon meiner App zeigen (in diversen Launchern)

Ich möchte aber das Gegenteil:

Ich habe aber einen eigenen Android-Launcher (HomeScreen-App) gemacht, wo viele Symbole von diversen Apps gezeigt werden die Starten wenn man drauf tippt, diese möchte ich mit kleinen Nummern versehen wenn es Notifications für die jeweilige App gibt
 
swa00

swa00

Moderator
Teammitglied
Ich denke , wir haben uns schon richtig verstanden :)

Du hast deinen eigenen Home Launcher, indem du das Icon der externen Apps extrahierst und dann als ShortCut anzeigst , richtig ??
Nun möchtest du in diesen Shortcuts ein Batch anzeigen lassen - richtig ?

Dazu musst du wie im obigen source verdeutlicht, die Icons zur Runtime auswechseln.
(Du kannst nicht mit Layern arbeiten)
Vorher dir natürlich aus dem Resolver die Anzahl ermitteln.
 
B

behemel

Neues Mitglied
Threadstarter
Das ist aber das Code-Beispiel das du gepostet hast:

ShortcutBadger:

The ShortcutBadger makes your Android App show the count of unread messages as a badge on your App shortcut!
 
swa00

swa00

Moderator
Teammitglied
Ja richtig , ich habe auch explizit dazu geschrieben :

Daraus kannst du die Technik gut ableiten
Es diente Dir als Hilfe , wie du es umsetzen kannst - es bedeutete nicht , dass du es
1:1 nehmen kannst und der Käse gegessen wäre ...

Schliesslich möchtest du deine eigenen Listener verwenden , da du deinen eigenen HomeLauncher nimmst.
 
B

behemel

Neues Mitglied
Threadstarter
Ja, das habe ich schon verstanden, aber ich glaube dennoch dass wir aneinander vorbeireden (oder schreiben :D)

Die Codebeispiele zeigen, wie ich eine App machen kann, die in allen möglichen Launchern ein Badge-Icon zeigen kann.

Ich möchte aber z.B von Facebook den Broadcast "Hey, ich bin Facebook, du hast 3 neue Notifications" oder von Whatsapp
"Hey, ich bin WhatsApp, du hast 5 ungelesene Nachrichten".

Diese Broadcasts der installierten Apps möchte ich erhalten.

In den CodeBeispielen sehe ich zwar, wie der ShortcutBadger Intents raussendet, aber ich sehe nirgendwo wie ein HomeScreen-Launcher diese
empfangen und verarbeiten kann
 
swa00

swa00

Moderator
Teammitglied
Okeee , dann von Vorne :)

a) Zum wechseln der Icons , sprich einen Batch dem Icon hinzuzufügen, musst du in deinem Launcher zu Runtime das Icon austauschen.
b) Im obigen Source wird z.b. sehr deutlich dargestellt , wie du an die "unread" messages herankommst.
Das wird dadurch erreicht , indem du über den ContentResolver und dem PackgeName der entsprechenden App an die Anzahl herankommst
c) Als Trigger für Veränderungen fängst du die Notifies der Packages ab.

Ob du nun von rechts nach links oder umgekehrt gehst - sollte dir das Beispiel verdeutlichen
 
B

behemel

Neues Mitglied
Threadstarter
Dann verstehe ich aber nicht, warum mein Code-Beispiel zu wenig sein soll, oder nicht funktioniert.

die Beispiele von oben senden ein Intent "android.intent.action.BADGE_COUNT_UPDATE" raus mit einer Zahl "badge_count" und dem App-Namen "
badge_count_package_name".

Die diversen Launcher hören dann auf diesen Broadcast und pinnen die kleine Nummer an die jeweilige App (alles Logisch)

Mein Launcher hat aber auch einen BroadCastReceiver der genau auf "android.intent.action.BADGE_COUNT_UPDATE" filtert, aber der springt nie an, auch wenn in WhatsApp eine neue Nachricht kommt.
 
swa00

swa00

Moderator
Teammitglied
Ich meine irgendwo mal gelesen zu haben , dass man - je nach Android - Version- eher die Notifies triggern soll.

P.S Register mal den Receiver rein Program- mäßig (IntentFilter) und schau mal dann was passiert
(Also aus Manifest raus)
 
B

behemel

Neues Mitglied
Threadstarter
ok. danke soweit. topic closed ^^

mein code hat soweit gestimmt, nur debugger + system.out haben nichts gemacht weil ich den receiver in der manifest definiert hatte.

den receiver im code zu definieren hat dann geholfen :1f44d: (und logcat ansehen)
 
swa00

swa00

Moderator
Teammitglied
Ach schon wieder eine gute Tat :)

Dir viel Erfolg beim "Fertigstellen" :)
 
Thread starter Similar threads Forum Replies Date
M Android App Entwicklung 6
Similar threads
APP-Name gesucht
Oben Unten