如何在不唤醒 Android 屏幕的情况下发送通知
Posted
技术标签:
【中文标题】如何在不唤醒 Android 屏幕的情况下发送通知【英文标题】:How to send a notification without waking the screen on Android 【发布时间】:2021-12-30 06:59:45 【问题描述】:我的应用程序中有一个前台服务,其持久通知中有一个计时器,这意味着通知每秒发送一次以更新通知中显示的计时器。这意味着在某些设备上,通知设置为完全唤醒屏幕或在屏幕上短暂显示深色版本,屏幕会一直处于唤醒状态。
有没有办法以不会唤醒屏幕的方式发送通知?将其设置为设备上的静默通知可以解决此问题,但前台服务通知的重点在于它在设备上很显眼,因此这不是一个很好的解决方案,而且并非所有用户都知道这样做。
这就是我构建通知的方式:
NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Currently Reading")
.setSound(null)
.setContentIntent(TaskStackBuilder.create(this).run
addNextIntentWithParentStack(timerIntent)
getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
)
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true)
【问题讨论】:
我认为有一个setShowSilent
或setSilent
你可以使用...但我什至不确定它是否不会唤醒设备:)
【参考方案1】:
您是否尝试过更新通知?并使用 setOnlyAlertOnce()
“您可以选择调用 setOnlyAlertOnce(),以便您的通知仅在通知第一次出现时(通过声音、振动或视觉线索)中断用户,而不是以后更新。”
检查此链接 https://developer.android.com/training/notify-user/build-notification.html#Updating
【讨论】:
【参考方案2】:setPriority(NotificationCompat.PRIORITY_DEFAULT)?
降低它,所以不会在锁屏上显示(android 7 及更高版本)
在这里,我们对 this 部分进行了小修复:
setPriority(NotificationCompat.PRIORITY_LOW)
您还可以添加:
setVisibility(NotificationCompat.VISIBILITY_PRIVATE)
但它也会从锁屏中删除通知...
文档:
-
https://developer.android.com/training/notify-user/build-notification.html#lockscreenNotification
https://developer.android.com/training/notify-user/channels#importance
希望这会有所帮助 =]
【讨论】:
这也很有用 -» developer.android.com/reference/android/app/… =]以上是关于如何在不唤醒 Android 屏幕的情况下发送通知的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 3rd 方服务的情况下使用 WCF 将推送通知发送到单独的 Android 设备?
是否可以在不构建任何应用程序的情况下向 Android 发送推送通知?
如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?
如何在不创建通知的情况下将图标添加到 Android 状态栏?