2

我正在尝试修复始终位于无法关闭的通知栏顶部的四个按钮。首次启动应用程序时,按钮将始终固定。为此,我正在通过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;做了这件事,但它只针对我们的应用程序。

我的要求:但我的要求是无论任何通知如何,都将我的通知始终放在首位。请帮助我提供您的提示和解决方案。提前致谢。

4

2 回答 2

1

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

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

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

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

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

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

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

那是因为控制通知顺序的是安卓,而不是你。

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

更准确地说,它只是顺序的一个标准。欢迎 Android 使用其他标准(例如,时间、系统应用与普通应用、正在进行与常规、前台服务与常规)来决定它将使用什么顺序。

于 2016-02-03T19:45:51.177 回答
0

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

于 2016-02-03T21:56:13.840 回答