如何将通知始终固定在通知栏的顶部

时间:2016-02-02 08:01:00

标签: android notifications android-notification-bar android-remoteview custom-notificaiton

我正在尝试修复无法关闭的通知栏顶部的四个按钮。第一次启动应用程序时,按钮将一直固定。为此,我将通过 Notification Builder 创建通知,如下所示。

 Notification notification = new Notification.Builder(this).build();      
       notification.flags = Notification.FLAG_ONGOING_EVENT;
       notification.icon = R.drawable.ic_launcher;
       notification.contentIntent = pendingIntent;
       notification.setSmallIcon = R.drawable.ic_launcher;
       notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
       notification.priority = Notification.PRIORITY_HIGH;
       mNotificationManager.notify(Constants.NOTIFICATION_ID_BRANDING, notification);

一切正常,我甚至可以在顶部显示我的通知,但是当我收到来自不同应用程序的其他通知时,我的通知显示在该应用程序下方。

notification.priority = Notification.PRIORITY_HIGH;执行此操作,但它仅适用于我们的应用程序。

我的要求:但我的要求是始终将通知保持在最高位置,而不管任何通知。请帮助我提供您的提示和解决方案。提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

我正在尝试修复通知栏顶部无法关闭的四个按钮

除非您创建自己的自定义ROM,否则这是不可能的。

首先,Android,而不是您,确定通知托盘中项目的顺序。

其次,在Android 5.0+上,用户可以阻止通知,从而阻止您的应用展示任何内容,更不用说顶部的内容了。

第三,如果2位以上的程序员尝试实现相同的“要求”,则必须输掉,因为只有一个最顶层的项目。因此,即使您的方法有效,但面对某些其他开发人员尝试相同的事情,他们可能会失败。

除此之外,即使您提出了一些似乎有效的脚本小子方法,它也可能在其他设备上失败,因为订购通知的规则可能与设备和操作系统版本有关。

  

当我收到来自不同应用程序的其他通知时,我的通知显示在该应用程序下面

这是因为Android而不是你控制通知的顺序。

  

行notification.priority = Notification.PRIORITY_HIGH;做的事情,但它只针对我们的应用程序。

更确切地说,它只是订单的一个标准。欢迎Android使用其他标准(例如,时间,系统应用与普通应用,持续与常规,前台服务与常规)以决定它将使用的订单。

答案 1 :(得分:0)

您正在寻找的是前台服务。检查http://developer.android.com/reference/android/app/Service.html#startForeground(int,android.app.Notification)