Android 基于 BroadcastReceiver 的通知未显示
Android notification built on BroadcastReceiver is not showing
我正在尝试在 BroadcastReceiver 中推送通知。到目前为止,通知没有任何具体内容,我真的只是想展示一下。
我从 https://developer.android.com/training/notify-user/time-sensitive 复制了代码并添加了对 NotificationManager 的调用以显示通知,但还是没有任何反应。
广播接收器:
package codehero.twitteralarmclock.receivers
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast
import androidx.core.app.NotificationCompat
import codehero.twitteralarmclock.R
import codehero.twitteralarmclock.ui.main.snooze.SnoozeActivity
class AlarmBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Toast.makeText(context, "Alarm triggered", Toast.LENGTH_LONG).show()
val fullScreenIntent = Intent(context, SnoozeActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val fullScreenPendingIntent = PendingIntent.getActivity(context, 0, fullScreenIntent, PendingIntent.FLAG_IMMUTABLE)
val notificationBuilder = NotificationCompat
.Builder(context, "0")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle("Incoming call")
.setContentText("(919) 555-1234")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setContentIntent(fullScreenPendingIntent)
val notification = notificationBuilder.build()
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(0, notification)
}
}
BroadcastReceiver 中的代码是 运行 因为显示了 Toast。我不知道我是否需要其他任何东西,如果通知不会触发,因为我在 BroadcastReceiver 中创建它。
非常感谢任何帮助,因为我在这里找到的所有其他答案都没有帮助。
感谢您的宝贵时间!
从Android8开始,需要先创建一个通知通道。
如果通知频道是第一个创建的(由 CHANNEL_ID 引用),通知将不会显示 Android 8 及更高版本。
请检查此主题:https://developer.android.com/training/notify-user/build-notification#Priority
我正在尝试在 BroadcastReceiver 中推送通知。到目前为止,通知没有任何具体内容,我真的只是想展示一下。
我从 https://developer.android.com/training/notify-user/time-sensitive 复制了代码并添加了对 NotificationManager 的调用以显示通知,但还是没有任何反应。
广播接收器:
package codehero.twitteralarmclock.receivers
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast
import androidx.core.app.NotificationCompat
import codehero.twitteralarmclock.R
import codehero.twitteralarmclock.ui.main.snooze.SnoozeActivity
class AlarmBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Toast.makeText(context, "Alarm triggered", Toast.LENGTH_LONG).show()
val fullScreenIntent = Intent(context, SnoozeActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val fullScreenPendingIntent = PendingIntent.getActivity(context, 0, fullScreenIntent, PendingIntent.FLAG_IMMUTABLE)
val notificationBuilder = NotificationCompat
.Builder(context, "0")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle("Incoming call")
.setContentText("(919) 555-1234")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setContentIntent(fullScreenPendingIntent)
val notification = notificationBuilder.build()
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.notify(0, notification)
}
}
BroadcastReceiver 中的代码是 运行 因为显示了 Toast。我不知道我是否需要其他任何东西,如果通知不会触发,因为我在 BroadcastReceiver 中创建它。
非常感谢任何帮助,因为我在这里找到的所有其他答案都没有帮助。
感谢您的宝贵时间!
从Android8开始,需要先创建一个通知通道。 如果通知频道是第一个创建的(由 CHANNEL_ID 引用),通知将不会显示 Android 8 及更高版本。
请检查此主题:https://developer.android.com/training/notify-user/build-notification#Priority