【问题标题】:Object passed in Intent from class FirebaseMessageReceiver not able to fetch in Activity从类 FirebaseMessageReceiver 传入 Intent 的对象无法在 Activity 中获取
【发布时间】:2021-11-09 09:52:38
【问题描述】:

在收到任何推送通知时, 在 FirebaseMessageReceiver 类中像往常一样我们创建 Pending Intent,在其中存储数据以将其传递给 Activity。

我做了以下同样的事情:

val intentPushNotification = Intent(this, HomeActivity::class.java)
    intentPushNotification.putExtra(PUSH_NOTIFICATION_BATTERY_ID, ""+firmwareObj.batteryId)
    intentPushNotification.putExtra(PUSH_NOTIFICATION_FIRMWARE_OBJ,firmwareObj)

简单地说, 在 HomeActivity 中接收如下:

val batteryId = intent.getStringExtra(PUSH_NOTIFICATION_BATTERY_ID)
Log.e(">>>>> TEST ",""+batteryId)

val objFirmware = intent.getSerializableExtra(PUSH_NOTIFICATION_FIRMWARE_OBJ) as FirmwareUpdate

我的 FirmwareUpdate 类如下:

@Keep
data class FirmwareUpdate(
    val batteryId: String,
    val description: String,
    val firmwareUrl: FirmwareUrl,
    val id: Int,
    val timeStamp: Int,
    val versionNumber: String,
    val whatsNew: String
): Serializable

但问题是我成功获取了 batteryId 的值,而不是 firmwareObj

我在其中得到了空值。可能是什么问题? 您还可以检查我是否在 pojo 类中也实现了 :Serializable

错误:

kotlin.TypeCastException: null 不能转换为非 null 类型 com.appview.home.model.downloadapi.FirmwareUpdate

【问题讨论】:

  • FirmwareUrl 还是Serializable
  • 您如何处理您创建的PendingIntent?你把它放在Notification 吗?
  • 我使用了 bundle,它现在可以工作了。

标签: android serialization android-intent push-notification android-pendingintent


【解决方案1】:

解决方案是, 我们可以创建捆绑包, 可以在 Bundle 中添加可序列化的对象,然后我们必须在 Intent 中传递该 Bundle。

这样,我们就可以从名为 FirebaseMessageReceiver 的 Firebase 通知类中获取 Activity 中的对象了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多