Android 有前台服务的工作人员不显示通知
Android worker with foreground service does not show notifications
我正在按照 this documentation 创建一个长期工作人员 运行 使用前台服务,但没有显示任何通知。
工人运行,我看到日志了。
代码:
override suspend fun doWork(): Result {
Log.d(TAG, "Worker start")
setForeground(createForegroundInfo("Hello from my notification"))
Log.d(TAG, "Worker end")
return Result.success()
}
private fun createForegroundInfo(progress: String): ForegroundInfo {
val channelId = applicationContext.getString(R.string.notification_channel_id)
val title = applicationContext.getString(R.string.notification_title)
// This PendingIntent can be used to cancel the worker
val intent = WorkManager.getInstance(applicationContext)
.createCancelPendingIntent(getId())
// Create a Notification channel if necessary
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createChannel()
}
val notification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle(title)
.setTicker(title)
.setContentText(progress)
.setSmallIcon(R.drawable.ic_notifications_black_24dp)
.setOngoing(true)
.build()
return ForegroundInfo(1, notification)
}
@RequiresApi(Build.VERSION_CODES.O)
private fun createChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
val name = applicationContext.getString(R.string.notification_channel_name)
val descriptionText = applicationContext.getString(R.string.notification_channel_description)
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channelId = applicationContext.getString(R.string.notification_channel_id)
val channel = NotificationChannel(channelId, name, importance).apply {
description = descriptionText
}
// Register the channel with the system
val notificationManager: NotificationManager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
问题是 doWork
功能持续时间太短,不足以看到通知。
我正在按照 this documentation 创建一个长期工作人员 运行 使用前台服务,但没有显示任何通知。
工人运行,我看到日志了。
代码:
override suspend fun doWork(): Result {
Log.d(TAG, "Worker start")
setForeground(createForegroundInfo("Hello from my notification"))
Log.d(TAG, "Worker end")
return Result.success()
}
private fun createForegroundInfo(progress: String): ForegroundInfo {
val channelId = applicationContext.getString(R.string.notification_channel_id)
val title = applicationContext.getString(R.string.notification_title)
// This PendingIntent can be used to cancel the worker
val intent = WorkManager.getInstance(applicationContext)
.createCancelPendingIntent(getId())
// Create a Notification channel if necessary
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createChannel()
}
val notification = NotificationCompat.Builder(applicationContext, channelId)
.setContentTitle(title)
.setTicker(title)
.setContentText(progress)
.setSmallIcon(R.drawable.ic_notifications_black_24dp)
.setOngoing(true)
.build()
return ForegroundInfo(1, notification)
}
@RequiresApi(Build.VERSION_CODES.O)
private fun createChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
val name = applicationContext.getString(R.string.notification_channel_name)
val descriptionText = applicationContext.getString(R.string.notification_channel_description)
val importance = NotificationManager.IMPORTANCE_DEFAULT
val channelId = applicationContext.getString(R.string.notification_channel_id)
val channel = NotificationChannel(channelId, name, importance).apply {
description = descriptionText
}
// Register the channel with the system
val notificationManager: NotificationManager = applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
问题是 doWork
功能持续时间太短,不足以看到通知。