Zum Inhalt springen

Android-App-Symbol ändern

Um das Anwendungssymbol basierend auf der Anzahl der Benachrichtigungen in der Benachrichtigungszentrale zu ändern, befolgen Sie die folgenden Schritte.

  1. Fügen Sie Ihrem Projekt im Ordner ‘mipmap’ ein neues Symbol hinzu.
Screenshot, der die Ordnerstruktur von mipmap in Android Studio mit einer neu hinzugefügten Symboldatei zeigt
  1. Erstellen Sie eine neue Activity-Klasse.
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivityAlias extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
  1. Erstellen Sie eine Klasse mit der Logik zum Ändern des Symbols.
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
public class MyPushReceiver {
public static void changeAppIcon(Context context, int count) {
PackageManager pm = context.getPackageManager();
if (count > 0) {
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivityAlias"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
} else {
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivityAlias"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
}
}
}
  1. Implementieren Sie in Ihrer NotificationServiceExtension-Klasse die Nachverfolgung für den Empfang/das Löschen von Push-Benachrichtigungen.
@Override
public boolean onMessageReceived(final PushMessage message) {
super.onMessageReceived(message);
if (!message.isSilent()) {
/**
* In diesem Beispiel wird einfach eine zufällige Anzahl von Benachrichtigungen angezeigt.
* Sie müssen die Logik zum Zählen der Benachrichtigungen selbst implementieren.
*/
int notificationCount = 1;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
/**
* Pushwoosh-Callback zur Nachverfolgung der Entfernung von Push-Benachrichtigungen aus der Benachrichtigungszentrale.
*/
@Override
protected void onMessageCanceled(PushMessage message) {
super.onMessageCanceled(message);
if (!message.isSilent()) {
/**
* In diesem Beispiel wird einfach eine zufällige Anzahl von Benachrichtigungen angezeigt.
* Sie müssen die Logik zum Zählen der Benachrichtigungen selbst implementieren.
*/
int notificationCount = 0;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
  1. Fertig!

Beispiel, wie es auf dem Gerät aussieht

Anchor link to