如何解决Android通知图标在某些设备上为空白
在某些Android设备(Pixel 2 XL和Pixel 5-均为Android 11)上,我一直收到空白/灰色的通知图标,但是在我测试过的其他Android设备(华为P20和P30-均为Android)上,它的显示都很好10)。还有其他人遇到这种异常吗?
这是我尝试过的:
-
我确保所有图标的大小都使用defined bitmap densities遵循Android Asset Studio。
-
我还将
.setColorized()
方法添加到了 Notification.Builder个对象,因为之前在 代码,但这完全没有区别。我包括了我的 通知代码如下:
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())
}
解决方法
我在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来了解键线形状
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。