Most of the cases of this issue I've seen were resolved by setting the correct ClassLoader
in process of unmarshalling your custom Parcelable
class.
Have a closer look at your MyMessage
constructor, specifically on how you obtain ClassLoader
:
private MyMessage(Parcel in) {
//...
//causes ClassNotFoundException
this.field=in.readParcelable(null);
//causes ClassNotFoundException, in fact it's equivalent to previous
this.field=in.readParcelable(ClassLoader.getSystemClassLoader());
//this one should work
this.field=in.readParcelable(getClass().getClassLoader());
}
More details can be found in this question.
UPDATE: Also, try setting correct ClassLoader
for Bundle
contained in your Intent
:
public void onReceive(Context context, Intent intent) {
Bundle extras=intent.getExtras();
extras.setClassLoader(getClass().getClassLoader());
MyCustomResponseMsg message = new MyCustomResponseMsg((MyMessage) extras.getParcelable(MyMessage.EXTRA_MESSAGE_KEY));
//...
}