当前位置: 首页 > 知识库问答 >
问题:

我如何让程序在屏幕上显示多个通知?

子车峰
2023-03-14

我似乎无法理解如何显示多个通知而不让一个覆盖另一个。在我的例子中,它一次只显示一个。图片1

我的目标是让它像图2下面的截图一样工作

分配给通知的代码块

@Override
    protected void onPostExecute(Bitmap result) {

        super.onPostExecute(result);
        Intent intent = new Intent(ctx, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.putExtra("com.example.romanchuk.appisode.notifyId", id);
        intent.putExtra("com.example.romanchuk.appisode.show_id", show_id);
        PendingIntent pendingIntent = PendingIntent.getActivity(ctx, sNotificationId /* Request code */, intent,
                PendingIntent.FLAG_UPDATE_CURRENT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

        inboxStyle.addLine(message);

        NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
        bigText.bigText(message);
        bigText.setBigContentTitle(getString(R.string.app_name));

        NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx);
        Notification notification = null;
        notification = builder.setSmallIcon(R.mipmap.ic_launcher).setTicker(title).setWhen(0)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
                .setColor(getResources().getColor(R.color.color_accent))
                .setContentTitle("Appisode")
                .setContentIntent(pendingIntent)
                .setFullScreenIntent(pendingIntent, true)
                .setContentText(message)
                .setDefaults(Notification.DEFAULT_ALL)
                .setAutoCancel(true)
                .setStyle(inboxStyle)
                .setSmallIcon(R.drawable.small_icon)
                .setSound(defaultSoundUri).build();

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

        notificationManager.notify(sNotificationId++, notification);
    }

共有1个答案

沈弘盛
2023-03-14

如果您想显示多个通知,您的通知id应该不同,如果通知id已经存在于通知中,它将覆盖该通知。

notificationManager.notify(sNotificationId++, notification);

在此snotificationID对于所有通知都应不同

如果您的idshow_id是int而不是常量,并且每个通知的值都不同,那么您也可以将其用作通知ID。

或者尝试为每个通知提供不同的标记,

notificationManager.notify(String.valueOf(System.currentTimeMillis()), sNotificationId++, notification);
 类似资料:
  • 这可能是我处理布局的方式有问题。对Java和Android软件开发工具包来说有点新鲜。我正在使用Android Studio。 我在这一点上的目标是有一个应用程序,屏幕底部显示一个带有图标的导航栏,顶部有一个带有“关闭”按钮和“保存”按钮的工具栏。工具栏和导航栏之间应该是一个空白的白色屏幕。 但是我很难让工具栏停留在屏幕的顶部。灰色背景占据了白色背景前面的整个屏幕。下面是截图。 这是我所知道的:

  • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。

  • 我正在使用firebase auth的电子邮件和密码登录。 现在,当我更改帐户时,显示的用户名将根据更改的帐户而更改。我想在不更改用户名的情况下发布多个帐户。 这是用于声明名称的代码: 注册代码: 邮政编码:

  • 问题内容: 我的问题是关于显示和更新文本,以便在屏幕上显示乐谱。 我想创建一个像真实游戏一样出现在屏幕上的乐谱。但是在研究了Google之后,我还没有发现有人希望在屏幕上增加分数… 的确,我希望每次鸟在管道之间通过时得分都增加,因此每当管道的X值为67像素时,分数都会增加。那么,有人知道该怎么做吗? 有人可以向我解释这个问题,因为我认为这很容易:(这是游戏的图片:) 这是游戏的图片 问题答案: 这

  • 我正在开发一个应用程序,我想在屏幕上显示计时器,并用它做动作。我需要当计时器停止时,玩家会输掉比赛。这部分我可以单独做,但我不知道如何做的部分是如何在屏幕上显示计时器,并使剩余的时间可见。 我希望你能帮助我,谢谢你的帮助!