Pular para o conteúdo

Alterar ícone do aplicativo Android

Para alterar o ícone do aplicativo com base no número de notificações na central de notificações, siga os passos abaixo.

  1. Adicione um novo ícone ao seu projeto na pasta ‘mipmap’.
Captura de tela mostrando a estrutura da pasta mipmap no Android Studio com um novo arquivo de ícone adicionado
  1. Crie uma nova classe de 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);
}
}
  1. Crie uma classe com a lógica para alterar o ícone.
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. Na sua classe NotificationServiceExtension, implemente o rastreamento para receber/excluir notificações push.
@Override
public boolean onMessageReceived(final PushMessage message) {
super.onMessageReceived(message);
if (!message.isSilent()) {
/**
* Neste exemplo, um número aleatório de notificações é simplesmente indicado.
* Você precisa implementar a lógica para contar as notificações por conta própria.
*/
int notificationCount = 1;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
/**
* Callback do Pushwoosh para rastrear a remoção de notificações push da Central de Notificações.
*/
@Override
protected void onMessageCanceled(PushMessage message) {
super.onMessageCanceled(message);
if (!message.isSilent()) {
/**
* Neste exemplo, um número aleatório de notificações é simplesmente indicado.
* Você precisa implementar a lógica para contar as notificações por conta própria.
*/
int notificationCount = 0;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
  1. Pronto!

Exemplo de como fica no dispositivo

Anchor link to