android在任何应用程序的顶部显示通知吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (144)

通过下面的代码,我的通知只会添加到通知栏中,不会显示弹出式消息,就像你在其他应用程序中时收到whatsapp消息一样:

private void sendNotification(int distance, ViewObject viewObject) {
    Intent notificationIntent = new Intent(getApplicationContext(), MainActivity.class);
    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    notificationIntent.putExtra("path", viewObject.getPath());
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(notificationIntent);
    PendingIntent notificationPendingIntent = stackBuilder.getPendingIntent(Integer.parseInt(viewObject.getRefId()), PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
    bigText.bigText(String.format(getString(R.string.notification), viewObject.getTitle()));
    bigText.setBigContentTitle(getString(R.string.hello));

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
    builder.setSmallIcon(R.drawable.ic_wald_poi)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_poi))
            .setColor(getResources().getColor(R.color.primary))
            .setContentTitle(getString(R.string.hello))
            .setContentIntent(notificationPendingIntent)
            .setContentText(String.format(getString(R.string.notification), viewObject.getTitle()))
            .setDefaults(Notification.DEFAULT_ALL)
            .setStyle(bigText);

    builder.setAutoCancel(true);
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(0, builder.build());
}
提问于
用户回答回答于

如果你想用Heads-up Notifications这样的话:

在Android 7.1(API等级25)及更低版本上:

  • 将通知优先权设置为Notification.PRIORITY_HIGHNotification.PRIORITY_MAX
  • 设置铃声和振动 - 您可以使用 setDefaults(Notification.DEFAULT_ALL)

Android 8.0(API等级26)及更高版本:

  • 将通知优先权设置为 NotificationManager.IMPORTANCE_HIGH

码:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
            builder.setSmallIcon(R.drawable.ic_wald_poi)
                    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_poi))
                    .setColor(getResources().getColor(R.color.primary))
                    .setContentTitle(getString(R.string.hello))
                    .setContentIntent(notificationPendingIntent)
                    .setContentText(String.format(getString(R.string.notification), viewObject.getTitle()))
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setStyle(bigText)
                    .setPriority(NotificationManager.IMPORTANCE_HIGH)

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

  • 用户的活动处于全屏模式(应用程序使用fullScreenIntent)。
  • 通知具有高优先级,并在运行Android 7.1(API级别25)或更低的设备上使用铃声或振动。
  • 通知渠道对运行Android 8.0(API级别26)及更高版本的设备非常重要。

用户回答回答于

你必须将通知优先级设置为Notification.PRIORITY_HIGHNotification.PRIORITY_MAX。我也必须这样做.setDefaults(Notification.DEFAULT_ALL)

扫码关注云+社区