先学英语:
unmarshalling 解组;数据编出
今天遇到这样一个问题
堆栈大致和这个链接里面的一样
https://stackoverflow.com/questions/46274896/android-os-badparcelableexception-classnotfoundexception-when-unmarshalling-ap
Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling: aps
at android.os.Parcel.readParcelableCreator(Parcel.java:2536)
at android.os.Parcel.readParcelable(Parcel.java:2462)
at android.os.Parcel.readValue(Parcel.java:2365)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2813)
at android.os.Parcel.readSparseArray(Parcel.java:2068)
at android.os.Parcel.readValue(Parcel.java:2422)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2732)
at android.os.BaseBundle.unparcel(BaseBundle.java:269)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:934)
不同之处在于,我遇到的问题报错在android.os.BaseBundle.getBoolean
也就是从bundle中获取boolean类型数据的时候
在网上查了下,这种报错比较常见于从bundle中获取List数据,例如这个
http://blog.youkuaiyun.com/lincyang/article/details/7095417
也有很多博文推荐使用getClassLoader
不过这些显然不符合我这个getBoolean的条件
最后整理了下,问题的场景是这样的:
一个未知的apk,启动时候发出广播,然后我的APP就在解析广播中数据的时候,从bundle中第一次读取数据的时候挂了
其实冒号后面的就是重点,这个类的解析不成功导致了APP的崩溃ClassNotFoundException when unmarshalling:
所以,其实是bundle中数据和解析的数据类型不匹配的问题