安卓(Android):如何将我的通知置于通知区域顶部?

25

我想把我的通知放在通知区域的顶部。

一个解决方案是将“when”参数设置为我的通知对象,并将其设置为未来时间,例如:

notification.when = System.currentTimeMills()*2; 

我在使用的代码:

long timeNotification = System.currentTimeMillis()*2;
Notification notification = new Notification(statusIcon,c.getResources().getString(R.string.app_name),timeNotification);
notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
notification.when = timeNotification;
notification.priority = Notification.PRIORITY_MAX;

但是某些应用程序(如Facebook)能够在我的通知上方放置一个显示它们当前时间的简单通知。

如果我刷新我的通知,它仍然会在这些通知下面。

我需要设置哪些参数才能将我的Notification置于通知区域的顶部?


你正在测试哪个Android操作系统版本? - HitOdessit
Android 4.1.1果冻豆 - Meroelyth
4个回答

20

你应该这样做。其他的答案似乎已经过时了。

NotificationCompat.Builder mBuilder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.some_small_icon)
            .setContentTitle("Title")
            .setContentText("This is a test notification with MAX priority")
            .setPriority(Notification.PRIORITY_MAX);

setPriority(Notification.PRIORITY_MAX)是很重要的。根据需要,它也可以被替换为以下任何一种。

不同的优先级信息:

PRIORITY_MAX -- 用于紧急通知和关键通知,提醒用户处理特定任务之前具有时间关键性或必须解决的情况。

PRIORITY_HIGH -- 主要用于重要通讯,例如带有对用户特别感兴趣的内容的消息或聊天事件。高优先级通知将触发悬浮通知显示。

PRIORITY_DEFAULT -- 适用于所有不属于这里描述的其他优先级的通知。

PRIORITY_LOW -- 用于您希望向用户通报但不太紧急的通知。低优先级通知往往出现在列表底部,这使它们成为公共或非指向性社交更新等事物的好选择:用户已要求收到它们的通知,但这些通知不应比紧急或直接的通讯更为重要。

PRIORITY_MIN -- 用于上下文或背景信息,例如天气信息或上下文位置信息。最低优先级通知不会出现在状态栏中。用户可以在展开通知栏时发现它们。

有关更多详细信息,请查看以下链接: http://developer.android.com/design/patterns/notifications.html#correctly_set_and_manage_notification_priority


1
我想触发悬浮通知,但将优先级设置为PRIORITY_HIGH对我没有起作用。 - Shruti
1
应用程序仍然可以占据顶部位置。 - Harish Vishwakarma
1
优先级最大已被弃用。 - Sagar Nayak
PRIORITY_MAX已被弃用,请使用NotificationManager.IMPORTANCE_HIGH代替。 - Ali Nadalizadeh

4

您可以将通知设置为“持续”状态,这样它将比其他普通通知显示得更高。但在这种情况下,用户将无法手动清除它。

为此,请将标志设置到您的Notification对象中:

notif.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR

谢谢您的帮助。我编辑了我的问题,向您展示了我的代码。我已经使用了您的建议。 - Meroelyth

3

感谢您的帮助。我编辑了我的问题,展示给您我的代码。我已经使用了您的建议。 - Meroelyth
那么你得到的结果是什么? - Jagdeep Singh
1
有些应用程序可以将它们的通知放在我的上面。 - Meroelyth

2
请注意,如果您想要一个“提醒”通知,即在当前用户窗口的顶部显示的通知,您必须在构建器中设置以下内容:
setDefaults(NotificationCompat.DEFAULT_VIBRATE)

参考文献在 javadoc 中:

某些平台更可能将具有振动的通知呈现为悬浮通知。

悬浮通知的完整示例:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.some_small_icon)
            .setContentTitle("Title")
            .setContentText("This is a test notification with MAX priority")
            .setPriority(Notification.PRIORITY_MAX)
            .setDefaults(NotificationCompat.DEFAULT_VIBRATE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接