如何在屏幕上显示Android通知以及状态栏图标?

如何在屏幕上显示Android通知以及状态栏图标?,android,notifications,android-notifications,Android,Notifications,Android Notifications,我觉得这应该是微不足道的,但我似乎无法在手机屏幕上显示通知-它只显示在顶部的状态栏中 下面是我想做的一个例子,当你收到一条消息时,Facebook Messenger是如何显示在屏幕上的 每当我发送通知时,它所做的只是在状态栏中显示一个小图标——即使我将优先级设置为priority_MAX。是否需要进行其他设置以使其显示在屏幕上而不仅仅是状态栏上 通知显示代码: PendingIntent contentIntent = PendingIntent.getActivity(context, n

我觉得这应该是微不足道的,但我似乎无法在手机屏幕上显示通知-它只显示在顶部的状态栏中

下面是我想做的一个例子,当你收到一条消息时,Facebook Messenger是如何显示在屏幕上的

每当我发送通知时,它所做的只是在状态栏中显示一个小图标——即使我将优先级设置为priority_MAX。是否需要进行其他设置以使其显示在屏幕上而不仅仅是状态栏上

通知显示代码:

PendingIntent contentIntent = PendingIntent.getActivity(context, nextId++, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Notification.Builder builder = new Notification.Builder(context)
       .setContentTitle(title)
       .setContentText(description)
       .setContentIntent(contentIntent)
       .setSmallIcon(R.drawable.ic_stat_notification)
       .setLargeIcon(largeIcon)
       .setPriority(Notification.PRIORITY_DEFAULT)
       .setAutoCancel(true)
       .setDefaults(Notification.DEFAULT_ALL);

if (android.os.Build.VERSION.SDK_INT >= 21) {
    builder.setColor(context.getResources().getColor(R.color.orange_500))
           .setVisibility(Notification.VISIBILITY_PUBLIC);
}

Notification notification = builder.build();
notificationManager.notify(id, notification);

综合考虑,使用
NotificationCompat.Builder
而不是
Notification.Builder
确实是个好主意,更不用说手动创建
通知了。它为您提供了良好的向后兼容性和优雅的降级(一直追溯到API级别4,或者称为“gadzooks,那是旧的”)。顺便说一句,当与
NotificationManagerCompat
配合使用时,这是让一些Android Wear功能正常运行的唯一方法。而且,在这种情况下,安卓5.0+的新功能似乎更令人满意


在这种情况下,
NotificationCompat.Builder
上的
setPriority(NotificationCompat.PRIORITY\u HIGH)
,与
notificationmanager compat
一起使用,将在Android 5.0+上为您提供提示通知。

另一点,确保您为通知设置的“重要性”设置为
NotificationManager.importance\u HIGH

这将配置发布到此频道的视觉侵入性通知的方式,并且“高”将允许其窥视。如果您将此设置为
NotificationManager.IMPORTANCE\u DEFAULT
,则不会


请记住,在配置通知通道时,一旦代码在您的设备上运行,您将无法再次更改此设置。因此,如果您需要更改重要性,则需要卸载应用程序,然后重新运行,您应该会在屏幕上看到通知

通过对
NotificationCompat.Builder
使用高优先级,应该会出现这样的提示通知。看:啊,在那儿。奇怪的是,您需要使用
NotificationCompat.Builder
来实现这一点。如果你想把它添加为一个答案,我会接受。谢谢你提醒我重新安装这个应用程序。我在android 7和10上使用这个方法,他们都没有显示通知弹出窗口