Изменение иконки приложения Android
Чтобы изменить иконку приложения в зависимости от количества уведомлений в центре уведомлений, выполните следующие шаги.
- Добавьте новую иконку в ваш проект в папку ‘mipmap’.

- Создайте новый класс Activity.
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);
}}
- Создайте класс с логикой для изменения иконки.
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 ); } }}
- В вашем классе NotificationServiceExtension реализуйте отслеживание получения/удаления push-уведомлений.
@Overridepublic boolean onMessageReceived(final PushMessage message) { super.onMessageReceived(message);
if (!message.isSilent()) { /** * В этом примере просто указано случайное количество уведомлений. * Вам необходимо самостоятельно реализовать логику подсчета уведомлений. */ int notificationCount = 1;
if (getApplicationContext() != null) { MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount); } }}
/*** Коллбэк Pushwoosh для отслеживания удаления push-уведомлений из Центра уведомлений.*/@Overrideprotected void onMessageCanceled(PushMessage message) { super.onMessageCanceled(message);
if (!message.isSilent()) { /** * В этом примере просто указано случайное количество уведомлений. * Вам необходимо самостоятельно реализовать логику подсчета уведомлений. */ int notificationCount = 0;
if (getApplicationContext() != null) { MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount); } }}
- Готово!
Пример того, как это выглядит на устройстве
Anchor link to