单挑通知 - Android Lollipop

时间:2014-10-19 15:08:34

标签: android android-5.0-lollipop android-notifications

我正试图展示通知型单挑,但我不能。我尝试了什么

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模拟器上使用API​​ 21(不是L预览版) 我试过了:
android:Theme.Holo.NoActionBar
android:Theme.Holo.NoActionBar.Fullscreen
NotificationCompat.Builder

SDK示例不可用。有谁知道怎么做?

我通过添加以下内容使其成功:

.setDefaults(Notification.DEFAULT_VIBRATE)

这是最好的方法吗?

9 个答案:

答案 0 :(得分:82)

根据Notifications,您需要设置振动或铃声以使单挑工作。但是,这是一个快速入侵,不需要VIBRATE权限来生成平视通知:

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

编辑:

不要滥用抬头通知。有关何时使用抬头通知,请参阅here

  

MAX:用于关键和紧急通知,提醒用户注意时间要求严格的条件,或者在继续执行特定任务之前需要解决的问题。

     

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

答案 1 :(得分:15)

根据Google的说法: https://developer.android.com/design/patterns/notifications.html

  

如果通知的优先级被标记为高,最高或全屏,则会收到抬头通知。

因此,以下代码应生成抬头通知:

.setPriority(Notification.PRIORITY_MAX)

应该够了。但显然还必须设置.setDefaults(Notification.DEFAULT_VIBRATE)。希望Google能够在Android 5.0的最终版本中修复此问题。

不确定是否有错误或功能......

答案 2 :(得分:8)

我的所有应用都没有显示通知,例如我有一个带有Android 5.1.1的Nexus 6,但我认为这是自Android 5.0以来的一个问题,我必须设置:

.setPriority(Notification.PRIORITY_HIGH)

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

Android支持通知的优先级标志。此标记允许您相对于其他通知影响通知的显示位置,并有助于确保用户始终首先看到最重要的通知。发布通知时,您可以从以下优先级中进行选择:

  

MAX 用于关键和紧急通知,提醒用户注意时间紧迫或需要先解决的情况   他们可以继续完成一项特定任务。

     

HIGH 主要用于重要的通信,例如消息或聊天事件,其内容对于   用户。高优先级通知会触发抬头通知   显示。

     

DEFAULT 用于所有不属于此处所述的任何其他优先级的通知,如果应用程序没有   优先考虑自己的通知

     

LOW 用于您希望用户收到通知但不太紧急的通知。低优先级通知倾向于   显示在列表的底部,这使它们成为一个不错的选择   公共或无向社交更新等内容:用户要求   被通知他们,但这些通知应该永远不会   优先于紧急或直接沟通。

     

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

答案 3 :(得分:5)

要设置priority,请使用setPriority功能(在API 16中引入)以及setDefaultsNotification Builder(在API 11中添加)。根据您的应用需求选择优先级DEFAULT,HIGH,LOW,MAX,MIN。也可以选择默认值here

一个小片段:

$("table tr").each(function(){
    var tdFirstval=$(this).find("td:first").html();
    var val=$(this).find("td:last").html(); 

    //floor area td value
    if(tdFirstval=="floor area"){           
      console.log("Floor Area TD Value: "+val);
    }   
    else
    {
      console.log((val);
    }
});

答案 4 :(得分: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),通知可以显示为小型   设备时浮动窗口(也称为抬头通知)   处于活动状态(即设备已解锁且其屏幕已打开)。   这些通知看起来类似于您的紧凑形式   通知,但提前通知也显示行动   纽扣。用户可以在没有的情况下采取或解除提前通知   离开当前的应用程序。

     

可能触发单挑通知的条件示例   包括:

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

答案 5 :(得分:1)

请检查您的手机是否未处于“静音”或“请勿打扰”模式。我花了一天才找到它。对于那些遇到相同问题并发现此问题的人,我只发表评论。

答案 6 :(得分:0)

在您的代码中添加此行以显示抬头通知,它仅适用于Lollipop版本

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);

答案 7 :(得分:0)

对于运行Android 8.0(API级别26)及更高级别的设备,通知渠道需要高度重要性

<?xml version="1.0" encoding="utf-8"?>  
  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:weightSum="2"
        >
        <Button
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Button A"
            />
        <Button
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Button B"
            />
    </LinearLayout>

答案 8 :(得分:0)

您无需设置振动。您只需要设置声音即可。不太麻烦。我没有任何声音,但通知显示在顶部。确保使用PRIORITY_HIGH和DEFAULT_SOUND。

 NotificationChannel channel = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            channel = new NotificationChannel("my_channel_01",
                    "Channel human readable title",
                    NotificationManager.IMPORTANCE_HIGH);
            mNotificationManager.createNotificationChannel(channel);
        }


        Notification notification =
                new NotificationCompat.Builder(this, "notify_001")
                        .setSmallIcon(R.drawable.ic_check)
                        .setContentTitle("My notification")
                        .setContentText("Hello World!")
                        .setPriority(Notification.PRIORITY_HIGH)
                        .setDefaults(NotificationCompat.DEFAULT_SOUND)
                        .setChannelId("my_channel_01").build();


        mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(0, notification);