跳到内容

更改 Android 应用图标

要根据通知中心中的通知数量更改应用程序图标,请按照以下步骤操作。

  1. 在项目的 ‘mipmap’ 文件夹中添加一个新图标。
截图显示了 Android Studio 中的 mipmap 文件夹结构,并添加了一个新的图标文件
  1. 创建一个新的 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. 创建一个包含更改图标逻辑的类。
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. 在您的 NotificationServiceExtension 类中,实现接收/删除推送通知的跟踪。
@Override
public boolean onMessageReceived(final PushMessage message) {
super.onMessageReceived(message);
if (!message.isSilent()) {
/**
* 在此示例中,仅指示了随机数量的通知。
* 您需要自己实现计算通知的逻辑。
*/
int notificationCount = 1;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
/**
* 用于跟踪从通知中心删除推送通知的 Pushwoosh 回调。
*/
@Override
protected void onMessageCanceled(PushMessage message) {
super.onMessageCanceled(message);
if (!message.isSilent()) {
/**
* 在此示例中,仅指示了随机数量的通知。
* 您需要自己实现计算通知的逻辑。
*/
int notificationCount = 0;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
  1. 完成!

在设备上的显示效果示例

Anchor link to