2014-10-19 99 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),或
  • 通知具有高優先級和用途鈴聲或振動