我正试图使用向另一个活动发送时间戳
intent.putExtra("timeStamp", timeStamp)
然而,在某些版本的android上(通常是旧版本),我收到了以下错误:
Class not found when unmarshalling: com.google.firebase.Timestamp
java.lang.ClassNotFoundException: com.google.firebase.Timestamp
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at android.os.Parcel.readParcelableCreator(Parcel.java:3338)
at android.os.Parcel.readParcelable(Parcel.java:3272)
at android.os.Parcel.readValue(Parcel.java:3174)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3567)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)
at android.os.BaseBundle.unparcel(BaseBundle.java:236)
at android.os.BaseBundle.getString(BaseBundle.java:1196)
at m.sm.a(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):42)
at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.onActivityCreatedByScionActivityInfo(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):23)
at m.io.v(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):33)
at m.bx.onTransact(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):21)
at android.os.Binder.transact(Binder.java:1052)
at com.google.android.gms.internal.measurement.zzbu.zzb(com.google.android.gms:play-services-measurement-base@@22.2.0:21)
at com.google.android.gms.internal.measurement.zzdn.onActivityCreatedByScionActivityInfo(com.google.android.gms:play-services-measurement-base@@22.2.0:123)
at com.google.android.gms.internal.measurement.zzfq.zza(com.google.android.gms:play-services-measurement-sdk-api@@22.2.0:11)
at com.google.android.gms.internal.measurement.zzed$zzb.run(com.google.android.gms:play-services-measurement-sdk-api@@22.2.0:12)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.lang.ClassNotFoundException: com.google.firebase.Timestamp
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:1358)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:1418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)Â
at java.lang.Class.forName(Class.java:454)Â
at android.os.Parcel.readParcelableCreator(Parcel.java:3338) at android.os.Parcel.readParcelable(Parcel.java:3272)Â
at android.os.Parcel.readValue(Parcel.java:3174)Â
at android.os.Parcel.readArrayMapInternal(Parcel.java:3567)Â
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292)Â
at android.os.BaseBundle.unparcel(BaseBundle.java:236)Â
at android.os.BaseBundle.getString(BaseBundle.java:1196)Â
at m.sm.a(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):42)Â
at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.onActivityCreatedByScionActivityInfo(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):23)Â
at m.io.v(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):33)Â
at m.bx.onTransact(:com.google.android.gms.dynamite_measurementdynamite@[email protected] (150400-0):21)Â
at android.os.Binder.transact(Binder.java:1052)Â
at com.google.android.gms.internal.measurement.zzbu.zzb(com.google.android.gms:play-services-measurement-base@@22.2.0:21)Â
at com.google.android.gms.internal.measurement.zzdn.onActivityCreatedByScionActivityInfo(com.google.android.gms:play-services-measurement-base@@22.2.0:123)Â
at com.google.android.gms.internal.measurement.zzfq.zza(com.google.android.gms:play-services-measurement-sdk-api@@22.2.0:11)Â
at com.google.android.gms.internal.measurement.zzed$zzb.run(com.google.android.gms:play-services-measurement-sdk-api@@22.2.0:12)Â
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)Â
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)Â
at java.lang.Thread.run(Thread.java:923)Â
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
我试图使用一些不同的东西来看看它们是否有效,但它们都不起作用,其中一些甚至在所有版本中都发生了这个错误,或者使使用时间戳的代码完全停止一起工作。以下是我迄今为止尝试过的一些事情:
尝试1:
活动1:
intent.putExtra(“时间戳”,时间戳)
活动2:
val timeStamp = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra("timeStamp", Timestamp::class.java)
} else {
intent.getParcelableExtra<Timestamp>("timeStamp")
}
尝试2:
活动1:
intent.putExtra(“时间戳”,时间戳)
活动2:
intent.setExtrasClassLoader(Timestamp::class.java.classLoader)
val timeStamp = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getParcelableExtra("timeStamp", Timestamp::class.java)
} else {
intent.getParcelableExtra<Timestamp>("timeStamp")
}
尝试3:
活动1:
intent.setExtrasClassLoader(Timestamp::class.java.classLoader)
intent.putExtra("timeStamp", timeStamp)
活动2:
val时间戳=if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.TIRAMISU){
intent.getParcelableExtra(“时间戳”,时间戳::class.java)
}其他{
intent.getParcelableExtra<时间戳>(“时间戳”)
}
尝试4(由于时间戳不起作用,我尝试了Longs并将其转换回来):
活动1:
intent.putExtra("timeStampLong", claim.sentTime.seconds)
活动2:
val timeStampLong = intent.getLongExtra("timeStampLong", -1L)
val timeStamp = Timestamp(Date(timeStampLong))
虽然尝试4最初似乎有效,但时间戳似乎转换不正确(我在代码的其他地方使用了类似的转换,它工作得很好),因为当我尝试使用时间戳时,它什么也不做