我在试着让提醒通知起作用。通知是创建的,但它没有显示在应用程序的顶部。下面是负责构建通知的代码:
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle("Check running time - click!")
.setContentText(String.valueOf(elapsedTime))
.setContentIntent(pendingIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_HIGH)
.setVibrate(new long[0])
.build();我试图运行这个应用程序的设备是API 21。我见过很多线程,但没有一个解决方案对我有用。
发布于 2018-07-24 14:58:46
你需要做两件事:
步骤1.配置通知。
首先,注册您的通知通道如下
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH; //Important for heads-up notification
NotificationChannel channel = new NotificationChannel("1", name, importance);
channel.setDescription(description);
channel.setShowBadge(true);
channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}然后,创建一个通知,如下所示:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, "1")
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(textTitle)
.setContentText(textContent)
.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE) //Important for heads-up notification
.setPriority(Notification.PRIORITY_MAX); //Important for heads-up notification最后,按照通常的做法发送通知,例如:
Notification buildNotification = mBuilder.build();
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(001, buildNotification);第二步,配置电话。
我注意到我必须在我的手机上启用一些额外的设置(小米注释3):
以下是一些到达菜单的方法:
新Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS));(StartActivity)
最后,当您到达此菜单时,启用一个名为“浮动通知”的设置(此设置的名称因设备而异)。
发布于 2018-02-08 18:38:17
你的代码几乎没问题。我使用的是DEFAULT_VIBRATE而不是DEFAULT_ALL:
builder.setPriority(Notification.PRIORITY_HIGH);
if (Build.VERSION.SDK_INT >= 21) {
mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
}但是,你也可以设置
builder.fullScreenIntent(sameAsContentPendingtIntent);但是^这个是不确定的。我的意思是,系统选择显示HeadsUp或启动意图。在大多数情况下,它显示HeadUp,但我不指望它,因为安卓版本,制造商,启动等等。
最后,您还需要定义正确的通知通道。我认为你已经这样做了,因为如果你不这样做,你就不会看到任何通知:-)哦,可爱的安卓:-)无论如何,我想说的是,NotificationChannel也需要处于高度优先地位:
channel = new NotificationChannel("uniqueId", "name", NotificationManager.IMPORTANCE_HIGH);
channel.enableVibration(true);另外,我建议你查看developer.android.com的最新意见
从现在起,谷歌将更加严格。不仅是通知,也是目标应用,但这是另一个故事,请原谅我:)
今天的代码很好
发布于 2017-07-19 18:38:27
试着这样做:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(android.R.drawable.arrow_up_float)
.setContentTitle("Check running time - click!")
.setContentText(String.valueOf(elapsedTime))
.setContentIntent(pendingIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_HIGH)
.setVibrate(new long[0]);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());https://stackoverflow.com/questions/45198517
复制相似问题