【发布时间】: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