通知未显示 - 已设置 chennel 以及小图标、标题和文本

Posted

技术标签:

【中文标题】通知未显示 - 已设置 chennel 以及小图标、标题和文本【英文标题】:Notification not showing - already set chennel as well as small icon, title and text 【发布时间】:2021-01-19 08:36:43 【问题描述】:

我一直在我的其他应用程序上使用通知,它工作得很好。我也实现了channelId,但是当我对新应用程序使用类似的代码时,通知只是没有出现。未报告任何错误。

以下是我正在使用的代码

NotificationManager mNotificationManager =
                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

        Intent notIntent = new Intent(context, hk.class);
//        notIntent.setAction(BuildConfig.APP_ID + ".inspire");
        notIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendInt = PendingIntent.getActivity(context, ALARM_REQUEST_CODE,
                notIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Notification.Builder mBuilder =
                new Notification.Builder(context)
                        .setContentIntent(pendInt)
                        .setSmallIcon(R.drawable.spl)
//                        .setLargeIcon()
                        .setContentTitle(intent.getStringExtra("not_title"))
                        .setContentText(intent.getStringExtra("not_text"))
                        .setPriority(Notification.PRIORITY_HIGH)
                        .setDefaults(Notification.DEFAULT_VIBRATE)
                        .addAction(android.R.drawable.ic_menu_share, "Share", PendingIntent.getActivity(context, 0,
                                new Intent().setAction(Intent.ACTION_SEND).putExtra(Intent.EXTRA_TEXT,
                                         "\n\n" + "-His Holiness Bhakti Rasamrita Swami\n\n").setType("text/plain"), 0))
                        .setWhen(System.currentTimeMillis())
                        .setStyle(new Notification.BigTextStyle().bigText(intent.getStringExtra("big_text")));

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
            mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
        

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
            NotificationChannel channel = new NotificationChannel("daily", "Daily Nectar", NotificationManager.IMPORTANCE_HIGH);
            channel.setDescription("Daily Nectar");
            channel.enableLights(true);
            mNotificationManager.createNotificationChannel(channel);
            mBuilder.setChannelId("chId");
        
        mNotificationManager.notify(ALARM_REQUEST_CODE, mBuilder.build());
        Log.d("AlarmReceiver", "Notification Created"); //this log is printed in console 

我已经使用Logs进行了测试,因此我可以确保这个函数被调用,所以报警没有问题。

奇怪的是,它也不会抛出任何错误,并且其他应用程序上非常相似的代码运行良好。所以,我检查了这个应用的通知设置,发现通知设置也被启用了。

无法检测到问题所在。谢谢你的帮助。

【问题讨论】:

【参考方案1】:

有一个愚蠢的错误。

注意以下代码

        NotificationChannel channel = new NotificationChannel("daily", "Daily Nectar", NotificationManager.IMPORTANCE_HIGH);
        channel.setDescription("Daily Nectar");
        channel.enableLights(true);
        mNotificationManager.createNotificationChannel(channel);
        mBuilder.setChannelId("chId");

传递给新 NotificationChannel 的频道 ID 和在 builder 上设置的频道 ID 不同。更新过程中错误引入的错误。

编码愉快...

【讨论】:

以上是关于通知未显示 - 已设置 chennel 以及小图标、标题和文本的主要内容,如果未能解决你的问题,请参考以下文章

任务栏总是显示所有图标无法折叠隐藏

Android/MIUI 在通知栏中设置小图标不起作用?显示的默认图标

推送通知中未显示图像

oppo手机怎么让软件图标右上角用红点显示未读消息数量?

如何在 Facebook 等应用程序图标上显示通知计数?

未使用 FCM 通知图标