我的应用使用的前台服务通知在6.0及以下版本中运行正常。在某些情况下,我使用this answer隐藏状态栏和锁定屏幕的图标(我的应用有两种模式,一种"背景"模式,其中应用不需要永久通知用户,以及一个"高警报"模式,我使用此通知的最高优先级。)
正如我所说,这在Android 6.0及更低版本上运行良好。但是在Nougat上,即使我的应用程序针对API级别24(最低为API级别17)并使用所有内容的最新版本,此通知也会显示为正常通知。
我已经搜索了可能的解决方案,但由于7.0的相对新鲜度,信息不多。我注意到有些应用确实设法将其通知显示为最低优先级,即使在7.0(其中一个是AccuBattery)。
我使用以下代码创建通知:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(getString(R.string.app_name));
builder.setOngoing(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setSmallIcon(R.drawable.ic_stat_onesignal_default);
builder.setColor(getResources().getColor(R.color.notification_color));
Intent alertIntent = new Intent(this, SplashActivity.class);
alertIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, alertIntent, 0);
builder.setContentIntent(pendingIntent);
switch (mode) {
case ALERT:
builder.setContentText("Alert is active");
builder.setPriority(Notification.PRIORITY_MAX);
break;
case BACKGROUND:
default:
builder.setContentText("Background service running");
builder.setPriority(Notification.PRIORITY_MIN);
break;
}