更改 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 类中,实现接收/删除推送通知的跟踪。
@Overridepublic boolean onMessageReceived(final PushMessage message) { super.onMessageReceived(message);
if (!message.isSilent()) { /** * 在此示例中,仅指示了随机数量的通知。 * 您需要自己实现计算通知的逻辑。 */ int notificationCount = 1;
if (getApplicationContext() != null) { MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount); } }}
/*** 用于跟踪从通知中心删除推送通知的 Pushwoosh 回调。*/@Overrideprotected void onMessageCanceled(PushMessage message) { super.onMessageCanceled(message);
if (!message.isSilent()) { /** * 在此示例中,仅指示了随机数量的通知。 * 您需要自己实现计算通知的逻辑。 */ int notificationCount = 0;
if (getApplicationContext() != null) { MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount); } }}- 完成!