Android 如何在不唤醒屏幕的情况下发送通知
How to send a notification without waking the screen on Android
我的应用程序中有一个前台服务,其持久通知中有一个计时器,这意味着通知每秒发送一次以更新通知中显示的计时器。这意味着在某些设备上,通知设置为完全唤醒屏幕或在屏幕上短暂显示深色版本,屏幕会一直处于唤醒状态。
有没有办法以不唤醒屏幕的方式发送通知?将其设置为设备上的静默通知可以解决此问题,但前台服务通知的要点是它在设备上很显眼,因此这不是一个很好的解决方案,而且并非所有用户都知道这样做。
这就是我构建通知的方式:
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)
您是否尝试过更新通知?并使用 setOnlyAlertOnce()
“您可以选择调用 setOnlyAlertOnce(),这样您的通知只会在通知第一次出现时打断用户(通过声音、振动或视觉提示),而不会在以后的更新中出现。”
检查这个link
https://developer.android.com/training/notify-user/build-notification.html#Updating
setPriority(NotificationCompat.PRIORITY_DEFAULT)?
降低它,这样就不会在锁屏上显示(android 7 及以上)
这里我们对这个部分进行了一个小修复:
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
希望这对您有所帮助 =]
我的应用程序中有一个前台服务,其持久通知中有一个计时器,这意味着通知每秒发送一次以更新通知中显示的计时器。这意味着在某些设备上,通知设置为完全唤醒屏幕或在屏幕上短暂显示深色版本,屏幕会一直处于唤醒状态。
有没有办法以不唤醒屏幕的方式发送通知?将其设置为设备上的静默通知可以解决此问题,但前台服务通知的要点是它在设备上很显眼,因此这不是一个很好的解决方案,而且并非所有用户都知道这样做。
这就是我构建通知的方式:
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)
您是否尝试过更新通知?并使用 setOnlyAlertOnce()
“您可以选择调用 setOnlyAlertOnce(),这样您的通知只会在通知第一次出现时打断用户(通过声音、振动或视觉提示),而不会在以后的更新中出现。”
检查这个link https://developer.android.com/training/notify-user/build-notification.html#Updating
setPriority(NotificationCompat.PRIORITY_DEFAULT)?
降低它,这样就不会在锁屏上显示(android 7 及以上)
这里我们对这个部分进行了一个小修复:
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
希望这对您有所帮助 =]