在 Android 6.0 及以上版本中,应用需请求运行时权限才能在通知栏中显示通知。检查应用设置中的通知权限是否已开启并使用以下代码请求权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("channel_id",
"channel_name", NotificationManager.IMPORTANCE_DEFAULT);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(channel);
}
如果用户在系统设置中关闭了应用的通知权限,则应用将无法在通知栏中显示通知。使用以下代码检查应用的通知权限状态:
NotificationManagerCompat manager = NotificationManagerCompat.from(context);
boolean areNotificationsEnabled = manager.areNotificationsEnabled();
系统会根据一些规则过滤通知,例如优先级低、不包含任何内容或者需要静默通知等。使用以下代码检查通知是否可能被过滤:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id")
.setSmallIcon(R.drawable.icon)
.setContentTitle("Title")
.setContentText("Content")
.setPriority(NotificationCompat.PRIORITY_HIGH);
NotificationManagerCompat manager = NotificationManagerCompat.from(context);
int notificationId = 1;
manager.notify(notificationId, builder.build());
如果通知仍然不显示,则可能是因为被系统过滤掉了。可在系统设置中调整通知过滤规则,或者调整通知的优先级、内容等属性。
下一篇:Android通知不显示