首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android提示通知未显示

Android提示通知未显示
EN

Stack Overflow用户
提问于 2017-07-19 18:34:30
回答 6查看 20.6K关注 0票数 12

我在试着让提醒通知起作用。通知是创建的,但它没有显示在应用程序的顶部。下面是负责构建通知的代码:

代码语言:javascript
复制
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。我见过很多线程,但没有一个解决方案对我有用。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-07-24 14:58:46

你需要做两件事:

  1. 确保您的通知配置正确。请参阅:https://developer.android.com/guide/topics/ui/notifiers/notifications#Heads-up
  2. 并确保手机配置得当(我认为这是大多数手机卡住的地方)。

步骤1.配置通知。

首先,注册您的通知通道如下

代码语言:javascript
复制
    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);
    }

然后,创建一个通知,如下所示:

代码语言:javascript
复制
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

最后,按照通常的做法发送通知,例如:

代码语言:javascript
复制
Notification buildNotification = mBuilder.build();
NotificationManager mNotifyMgr = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
mNotifyMgr.notify(001, buildNotification);

第二步,配置电话。

我注意到我必须在我的手机上启用一些额外的设置(小米注释3):

以下是一些到达菜单的方法:

  1. 在通知栏中按一个通知。
  2. 转到:设置>已安装的应用程序>选择应用程序>通知
  3. 改进前一步,您可以通过将用户发送到已安装的应用程序菜单中,部分帮助用户,方法是使用以下意图:

新Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS));(StartActivity)

最后,当您到达此菜单时,启用一个名为“浮动通知”的设置(此设置的名称因设备而异)。

票数 22
EN

Stack Overflow用户

发布于 2018-02-08 18:38:17

你的代码几乎没问题。我使用的是DEFAULT_VIBRATE而不是DEFAULT_ALL:

代码语言:javascript
复制
builder.setPriority(Notification.PRIORITY_HIGH);
if (Build.VERSION.SDK_INT >= 21) {
   mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
}

但是,你也可以设置

代码语言:javascript
复制
builder.fullScreenIntent(sameAsContentPendingtIntent);

但是^这个是不确定的。我的意思是,系统选择显示HeadsUp或启动意图。在大多数情况下,它显示HeadUp,但我不指望它,因为安卓版本,制造商,启动等等。

最后,您还需要定义正确的通知通道。我认为你已经这样做了,因为如果你不这样做,你就不会看到任何通知:-)哦,可爱的安卓:-)无论如何,我想说的是,NotificationChannel也需要处于高度优先地位:

代码语言:javascript
复制
channel = new NotificationChannel("uniqueId", "name", NotificationManager.IMPORTANCE_HIGH);
channel.enableVibration(true);

另外,我建议你查看developer.android.com的最新意见

从现在起,谷歌将更加严格。不仅是通知,也是目标应用,但这是另一个故事,请原谅我:)

今天的代码很好

票数 1
EN

Stack Overflow用户

发布于 2017-07-19 18:38:27

试着这样做:

代码语言:javascript
复制
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());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45198517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档