如何显示抬头通知android

Posted

技术标签:

【中文标题】如何显示抬头通知android【英文标题】:How to show Heads up notifications android 【发布时间】:2016-02-04 07:09:59 【问题描述】:

如何获得提醒通知。使用下面的代码,我只能在状态栏上看到三个点,在通知栏中看到一个通知。

Intent intent = new Intent(this, MainActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent,PendingIntent.FLAG_ONE_SHOT);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.bip);
Uri defaultSoundUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.bip)
                .setContentTitle("Temp")
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.notify(0, notificationBuilder.build());

【问题讨论】:

请查看他们的文档:developer.android.com/guide/topics/ui/notifiers/… 好吧,这很愚蠢。需要设置选择我的应用程序并更改应用程序通知设置。之后可以看到抬头通知。但是 facebook 和其他应用程序如何在没有这些设置的情况下搞砸。 我假设您使用的是中国制造的手机。网上流传的迹象表明,这些对通知设置有限制,其他手机制造商不得将其放在他们的设备上。一些应用程序被列入白名单,可能是基于它们的受欢迎程度,很可能是基于手机制造商和应用程序提供商之间的付费协议。毕竟,这对手机制造商来说是一个额外的收入来源,就像预装的应用程序一样。 【参考方案1】:

这段代码对我有用:

NotificationCompat.Builder mBuilder =
                    new NotificationCompat.Builder(context)
                            .setSmallIcon(R.drawable.ic_media_play)
                            .setContentTitle("My notification")
                            .setContentText("Hello World!")
                            .setDefaults(Notification.DEFAULT_ALL)
                            .setPriority(Notification.PRIORITY_HIGH);

【讨论】:

如果有人想知道为什么上面的代码有效,请参阅developer.android.com/guide/topics/ui/notifiers/…【参考方案2】:

我遇到了同样的问题,但我使用的是较新的 NotificationCompat.Builder() 调用,它需要来自 NotificationChannel 的频道 ID。

仅当NotificationChannel 的重要性值为NotificationManager.IMPORTANCE_HIGH 创建时,该通知才会显示为提醒通知:

NotificationChannel channel = new NotificationChannel("channel01", "name", 
     NotificationManager.IMPORTANCE_HIGH);   // for heads-up notifications
channel.setDescription("description");

// Register channel with system
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);

显示提醒通知:

Notification notification = new NotificationCompat.Builder(this, "channel01")
        .setSmallIcon(android.R.drawable.ic_dialog_info)
        .setContentTitle("Test")
        .setContentText("You see me!")
        .setDefaults(Notification.DEFAULT_ALL)
        .setPriority(NotificationCompat.PRIORITY_HIGH)   // heads-up
        .build();

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, notification);

【讨论】:

【参考方案3】:

这对我有用:https://***.com/a/50296323/6161579

重要的是,一旦您像这样注册了通知系统:

// Register channel with system
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);

您不能再更改IMPORTANCE。根据我在更改IMPORTANCE 后更改CHANNEL_ID 的经验,通知允许它显示为提示通知。

【讨论】:

以上是关于如何显示抬头通知android的主要内容,如果未能解决你的问题,请参考以下文章

电容器本地通知抬头

Heads Up通知和徽章在某些Android设备中没有显示?

你可以检测到向上滑动Android头部通知

Androidandroid镜像翻转

AndroidAndroid如何对APK反编译

AndroidAndroid如何一进入一个activity就弹出输入法键盘