Saltar al contenido

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’.
Captura de pantalla que muestra la estructura de la carpeta mipmap en Android Studio con un nuevo archivo de ícono agregado
  1. Cree una nueva clase de Actividad.
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. Cree una clase con la lógica para cambiar el ícono.
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. En su clase NotificationServiceExtension, implemente el seguimiento para recibir/eliminar notificaciones push.
@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);
}
}
}
  1. ¡Listo!

Ejemplo de cómo se ve en el dispositivo

Anchor link to