Android通知图标在某些设备上为空白

问题描述

在某些Android设备(Pixel 2 XL和Pixel 5-均为Android 11)上,我一直收到空白/灰色的通知图标,但是在我测试过的其他Android设备(华为P20和P30-均为Android)上,它的显示都很好10)。还有其他人遇到这种异常吗?

这是我尝试过的:

private fun sendNotification(title: String?,message: String?,intent: Intent) {
        val pendingIntent = PendingIntent.getActivity(
            this,0 /* Request code */,intent,PendingIntent.FLAG_ONE_SHOT
        )

        // With the default notification channel id the heads up notification wasn't displayed
        val channelId = getString(R.string.heads_up_notification_channel_id)
        val notificationBuilder =
            NotificationCompat.Builder(this,channelId).setSmallIcon(R.mipmap.ic_stat_ic_notification)
                .setAutoCancel(true)
                .setColorized(true)
                .setColor(ContextCompat.getColor(this,R.color.color_orange))
                .setDefaults(Notification.DEFAULT_ALL)
                .setPriority(Notification.PRIORITY_MAX)
                .setContentIntent(pendingIntent)


        if (title != null) {
            notificationBuilder.setContentTitle(title)

        }

        if (message != null) {
            notificationBuilder.setContentText(message).setStyle(
                NotificationCompat.BigTextStyle()
                    .bigText(message)
            )
        }

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

        // Since android Oreo notification channel is needed.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val channel = NotificationChannel(
                channelId,"Test",NotificationManager.IMPORTANCE_HIGH
            )
            notificationManager.createNotificationChannel(channel)
        }

        notificationManager.notify(Random.nextInt()/* ID of notification */,notificationBuilder.build())
    }

enter image description here

解决方法

我在android 9,10,11上进行了测试。一切正常。 在android studio中,选择图片素材资源->单击图标类型->单击通知图标,例如notification icon creation in android studio或创建矢量素材资源。两者均有效。

    class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_scrolling)
              sendNotification("Hello","thinking of refering friend?",intent);
        }


    private fun sendNotification(title: String?,message: String?,intent: Intent) {
        val pendingIntent = PendingIntent.getActivity(
                this,0 /* Request code */,intent,PendingIntent.FLAG_ONE_SHOT
        )

        // With the default notification channel id the heads up notification wasn't displayed
        val channelId = getString(R.string.heads_up_notification_channel_id)
        val notificationBuilder =
                NotificationCompat.Builder(this,channelId).setSmallIcon(R.drawable.abcd)
                        .setAutoCancel(true)
                        .setColorized(true)
                        .setColor(ContextCompat.getColor(this,R.color.color_orange))
                        .setDefaults(Notification.DEFAULT_ALL)
                        .setPriority(Notification.PRIORITY_MAX)
                        .setContentIntent(pendingIntent)


        if (title != null) {
            notificationBuilder.setContentTitle(title)

        }

        if (message != null) {
            notificationBuilder.setContentText(message).setStyle(
                    NotificationCompat.BigTextStyle()
                            .bigText(message)
            )
        }

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

        // Since android Oreo notification channel is needed.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val channel = NotificationChannel(
                    channelId,"Test",NotificationManager.IMPORTANCE_HIGH
            )
            notificationManager.createNotificationChannel(channel)
        }

        notificationManager.notify(Random.nextInt()/* ID of notification */,notificationBuilder.build())
    }
}

让我知道。

,

我以前也有过类似的问题。就我而言,问题是我尝试使用的图标。我为通知图标使用了非PNG文件。当我将其切换为PNG格式时,该提名对于我测试的所有设备均正常工作。

如果您的图标未使用Png格式,则可以尝试这种方式。

另外,问题可能出在android reference website中的图标的大小上,

设置在通知布局中使用的小图标。不同类别的设备可能会返回不同的大小。

另请参见this guiadeline来了解键线形状

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...