# Cambiar el ícono de la aplicación de Android

Para cambiar el ícono de la aplicación según la cantidad de notificaciones en el centro de notificaciones, siga los pasos a continuación.

1.  Agregue un nuevo ícono a su proyecto en la carpeta 'mipmap'.

<img src="/android-notification-customisation-change-android-app-icon-1.webp" alt="Captura de pantalla que muestra la estructura de la carpeta mipmap en Android Studio con un nuevo archivo de ícono agregado"/>

2. Cree una nueva clase de Actividad.

```java
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);

    }
}
```

3. **Cree una clase con la lógica para cambiar el ícono.**

```java
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
            );
        }
    }
}
```

4. **En su clase `NotificationServiceExtension`, implemente el seguimiento para recibir/eliminar notificaciones push.**

```java
@Override
public boolean onMessageReceived(final PushMessage message) {
	super.onMessageReceived(message);

	if (!message.isSilent()) {
		/**
		 * En este ejemplo, simplemente se indica un número aleatorio de notificaciones.
		 * Debe implementar la lógica para contar las notificaciones usted mismo.
		 */
		int notificationCount = 1;

		if (getApplicationContext() != null) {
			MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
		}
	}
}

/**
* Callback de Pushwoosh para rastrear la eliminación de notificaciones push del Centro de Notificaciones.
*/
@Override
protected void onMessageCanceled(PushMessage message) {
	super.onMessageCanceled(message);

	if (!message.isSilent()) {
		/**
		* En este ejemplo, simplemente se indica un número aleatorio de notificaciones.
		* Debe implementar la lógica para contar las notificaciones usted mismo.
		*/
		int notificationCount = 0;

		if (getApplicationContext() != null) {
			MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
		}
	}
}
```

5. **¡Listo!**

### Ejemplo de cómo se ve en el dispositivo

<video src="/android-notification-customisation-change-android-app-icon-2.webm" title="Demostración animada que muestra el cambio dinámico del ícono de la aplicación cuando se reciben o eliminan notificaciones" autoplay loop muted playsinline />