Android BroadcastReceiver未接收本地广播

Android BroadcastReceiver未接收本地广播,android,kotlin,Android,Kotlin,我正在尝试扩展FCM服务,并在调用onNewToken()时将其广播到main活动onNewToken(),但没有调用onReceive()方法。据我所知,我不需要在清单中定义任何其他内容,因为这是一个本地广播。这些是我的课程: MainActivity.kt 通过Context.sendBroadcast()发送的广播不是本地广播,这就是您不接收它们的原因 您还需要使用LocalBroadcastManager进行发送 而不是以下内容: applicationContext.sendBroad

我正在尝试扩展FCM服务,并在调用
onNewToken()
时将其广播到
main活动<确实调用了code>onNewToken()
,但没有调用
onReceive()
方法。据我所知,我不需要在清单中定义任何其他内容,因为这是一个本地广播。这些是我的课程:

MainActivity.kt


通过
Context.sendBroadcast()
发送的广播不是本地广播,这就是您不接收它们的原因

您还需要使用
LocalBroadcastManager
进行发送

而不是以下内容:

applicationContext.sendBroadcast(Intent(TOKEN_REFRESHED_EVENT))
您应该这样做:

LocalBroadcastManager.getInstance(this)
        .sendBroadcast(Intent(TOKEN_REFRESHED_EVENT))
此外,请不要忘记在适当的时候注销接收器,以避免内存泄漏:

// most likely in onDestroy() (since the registration is in onCreate())
LocalBroadcastManager.getInstance(this)
        .unregisterReceiver(broadcastReceiver)

通过
Context.sendBroadcast()
发送的广播不是本地广播,这就是您不接收它们的原因

您还需要使用
LocalBroadcastManager
进行发送

而不是以下内容:

applicationContext.sendBroadcast(Intent(TOKEN_REFRESHED_EVENT))
您应该这样做:

LocalBroadcastManager.getInstance(this)
        .sendBroadcast(Intent(TOKEN_REFRESHED_EVENT))
此外,请不要忘记在适当的时候注销接收器,以避免内存泄漏:

// most likely in onDestroy() (since the registration is in onCreate())
LocalBroadcastManager.getInstance(this)
        .unregisterReceiver(broadcastReceiver)