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