如何显示抬头通知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的主要内容,如果未能解决你的问题,请参考以下文章