问题描述
我们正在开发一款应用,它可以通过电话号码识别来电的名称。 (我们的问题与 this one 类似,但解决方案不同)我们创建了一个 CallScreeningService,它接收来电的电话号码,我们能够在有来电时显示显示来电显示的 toast。然而,我们想要显示通知而不是显示吐司。 (我们也曾尝试显示 pop up window over Android native incoming call screen like true caller Android app 但在应用程序处于后台或关闭状态时未能显示它)现在我们还可以在有来电时创建来电显示通知,但它没有在视觉上出现屏幕。
非常感谢!
解决方法
假设您找到了一种方法让您的应用在打盹模式下保持活动状态,您需要将通知的频道重要性或通知的优先级设置为高或最大(旁注:通知频道的重要性优先于通知构建器的优先级)。
通知渠道:
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID,channelName,NotificationManager.IMPORTANCE_HIGH);
通知生成器:
NotificationCompat.Builder mBuilder =
(NotificationCompat.Builder) new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.some_small_icon)
.setContentTitle("Title")
.setContentText("This is a test notification with MAX priority")
.setPriority(Notification.PRIORITY_MAX);
如果打瞌睡模式正在杀死您的应用,您可以使用前台服务并返回服务。START_STICKY;或 WakefulBroadcastReceiver 与 startWakefulService() 混合。