2014-10-19 63 views
39

我试图展示通知类型的单挑,但我不能。我试过单向通知 - Android棒棒糖

   final Notification.Builder notif = new Builder(getApplicationContext()) 
       .setContentTitle(getString(R.string.title)) 
       .setContentText(getString(R.string.text)) 
     //  .setTicker(getString(R.string.tick)) removed, seems to not show at all 
     //  .setWhen(System.currentTimeMillis()) removed, match default 
     //  .setContentIntent(contentIntent) removed, I don't neet it 
       .setColor(Color.parseColor(getString(R.color.yellow))) //ok 
       .setSmallIcon(R.drawable.ic_small) //ok 
       .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)) 
     //  .setCategory(Notification.CATEGORY_CALL) does not seem to make a difference 
       .setPriority(Notification.PRIORITY_MAX); //does not seem to make a difference 
     //  .setVisibility(Notification.VISIBILITY_PRIVATE); //does not seem to make a difference 
       mNotificationManager.notify(Constants.NOTIFICATION_ID, notif.build()); 

通知只显示为在酒吧的一个图标。 我使用API​​ 21 api21仿真器(不要使用L预览) 尝试安卓Theme.Holo.NoActionBar和android:Theme.Holo.NoActionBar.Fullscreen 而NotificationCompat.Builder

SDK的例子是不可用的。有谁知道如何做到这一点?

我做了它的工作将

    .setDefaults(Notification.DEFAULT_VIBRATE) 

是最好的方式?

+0

如果这个为你工作时,你应该添加它作为答案。 – ProllyGeek 2014-12-08 23:47:38

+1

请注意,抬头通知在观看媒体或使用任何应用程序时可能极其烦人 - 毫不奇怪,几乎所有应用程序都使用屏幕顶部。他们为屏幕的前三分之一投下了阴影(在我的8“Tegra Shield上测试过)如果你必须使用这些(天知道为什么),至少应该在你的应用中禁用它们一个选项,请! – 2015-02-21 05:13:02

+0

@ user1499731 Android has本地支持禁用通知偷窥应用程序IIRC – Mygod 2016-03-06 00:02:57

回答

73

Notifications,你设置振动或铃声进行单挑工作所需。但是,这里有一个快速的黑客不需要VIBRATE许可生产抬头通知:

notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 
if (Build.VERSION.SDK_INT >= 21) notificationBuilder.setVibrate(new long[0]); 

编辑:

不要滥用抬头通知。见here何时使用抬头通知:

MAX:对于提醒用户这是时间紧急和需要解决,才可以与特定的任务继续的条件关键和迫切的通知。

HIGH:主要用于重要的沟通,如消息或聊天事件,内容对用户特别有意思。高优先级通知触发抬头通知显示。

+0

这是不正确的 - 我最近得到了一个使用这种方法在Samsung Android 4设备上发生SecurityException的崩溃报告 – 2015-12-31 21:33:33

+0

@DaiwikDaarun它是否被'setVibrate'引发?如果它只能在Android 4.x上重现,我们可以添加一个运行时版本检查。 – Mygod 2016-01-01 02:29:25

15

据谷歌称: https://developer.android.com/design/patterns/notifications.html

如果通知的优先级标记为高,最大,或全屏幕,它就会抬头通知。

所以下面的代码将产生一个抬头通知:

.setPriority(Notification.PRIORITY_MAX) 

应该够了。但显然.setDefaults(Notification.DEFAULT_VIBRATE)也必须设置。希望Google能够在Android 5.0的最终版本中解决这个问题。

不知道错误或...

+2

'Notification.PRIORITY_HIGH'足够高,您不必(也可能不应该)设置'PRIORITY_MAX',因为您想要您的通知将显示为抬头 – 2014-11-27 18:40:28

+6

看起来,声音和/或振动必须设置在通知上,以便显示为“抬头”。这实际上很有意义,因为看到它会很奇怪一个无声的“抬头”通知,并且它可能并不明显,这是一个系统通知,否则。 – 2014-12-12 20:45:25

+0

在Android M中,现在可以禁用每个应用程序的头部通知/窥视基础。所以如果这个偷看功能被禁用,无论你做什么,你的头像通知都不会显示。记住这一点。 – MLS 2015-06-17 13:42:31

6

我所有的应用程序doesn't显示通知,例如我有一台Nexus 6采用Android 5.1.1,但我认为这是由于Android 5.0的issuse,我不得不设置:

.setPriority(Notification.PRIORITY_HIGH) 

正确设置和管理通知优先级

Android支持通知的优先级标志。此标志允许您影响您的通知出现的位置,相对于其他通知,并有助于确保用户始终首先看到他们最重要的通知。

MAX使用的关键和迫切的通知是提醒用户这是时间紧急和需要解决 才可以继续的条件:发布通知时,可以从下面的优先级选择具有特定的任务。

HIGH主要用于重要的沟通,例如消息或聊天事件,其内容对于 用户特别有意义。高优先级通知触发单挑通知 显示。

DEFAULT使用所有通知不属于任何这里所描述的其他优先事项,如果应用程序没有 优先考虑其自身的通知

LOW使用所需的用户通知被告知,但不那么紧急。低优先级通知倾向于在列表底部显示 ,这使得它们成为 诸如公共或无向社交更新之类的不错选择:用户要求 被通知关于它们,但这些通知绝不应该采取 优先于紧急或直接交流。

MIN用于上下文或背景信息,如天气信息或上下文位置信息。最低优先级 通知不会出现在状态栏中。用户在扩展通知阴影时发现它们为 。

0

加入这行代码显示抬头通知这只是工作棒棒糖版本

notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 
+0

它对我有效 – 2016-08-10 09:44:16

3

要设置priority,使用setPriority功能非常久远setDefaults(在API 16中引入)(添加到API 11)Notification Builder。根据您的应用程序的要求,选择优先级DEFAULT,HIGH,LOW,MAX,MIN。默认值也可以选择here

一个小片段:

notification = NotificationBuilder(service) 
notification.setPriority(Notification.PRIORITY_MAX) 
notification.setDefaults(Notification.DEFAULT_ALL) 
+1

好你的代码适合我 – 2017-04-18 11:11:04

1

应设置高优先级,并使用铃声或振动。

notificationBuilder.setDefaults(Notification.DEFAULT_ALL); 
notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 

价:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Heads-up

单挑通知

借助Android 5.0(API级21),通知可以出现在一个小 浮动窗口(也称为heads-当设备 处于活动状态(即,设备已解锁并且其屏幕处于开启状态)时,将启动通知。 这些通知与您的 通知的紧凑形式类似,但抬头通知也显示动作 按钮。用户可以在没有 而离开当前应用程序的情况下采取行动或解除提醒通知。的可能触发条件

实例抬头通知 包括:

  • 用户的活动处于全屏模式(应用程序使用fullScreenIntent),或
  • 通知具有高优先级和用途铃声或振动