在Android 11上显示徽章计数需要使用Notification Badging API。以下是示例代码:
//获取应用程序上下文 Context context = getApplicationContext();
//构建通知管理器 NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
//检查应用是否被授予允许管理通知 if (notificationManager.areNotificationsEnabled()) {
//应用程序标识符
String packageName = context.getPackageName();
//构建查询条件
NotificationQuery query = new NotificationQuery.Builder()
.setPackage(packageName)
.build();
//执行查询
CompletableFuture> future = notificationManager
.queryNotifications(query);
//查询结果回调
future.thenAccept(statusBarNotifications -> {
//计算总数
int total = statusBarNotifications.size();
//显示徽章计数
ShortcutBadger.applyCount(context, total);
});
}
需要注意的是,在Android 11上,动态设置应用程序图标的徽章计数需要用户授予特定权限。可以通过以下代码请求权限:
NotificationManager notificationManager = getSystemService(NotificationManager.class);
//检查当前是否需要请求权限 if (notificationManager.isNotificationPolicyAccessGranted()) { //已授权,执行徽章计数更新 } else { //请求授予权限 Intent intent = new Intent( android.provider.Settings .ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); startActivity(intent); }