0

I am trying to open browser intent from my application on the click of a button. I am getting the following crash for the browser application:

02-05 14:16:00.526: E/AndroidRuntime(25626): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.mozilla.firefox/org.mozilla.gecko.BrowserApp}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: xtext.beans.JMatadataBean
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Handler.dispatchMessage(Handler.java:102)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Looper.loop(Looper.java:136)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread.main(ActivityThread.java:5001)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at java.lang.reflect.Method.invokeNative(Native Method)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at java.lang.reflect.Method.invoke(Method.java:515)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at dalvik.system.NativeStart.main(Native Method)
02-05 14:16:00.526: E/AndroidRuntime(25626): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: xtext.beans.JMatadataBean
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Parcel.readParcelableCreator(Parcel.java:2147)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Parcel.readParcelable(Parcel.java:2097)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Parcel.readValue(Parcel.java:2013)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Bundle.unparcel(Bundle.java:249)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.os.Bundle.getString(Bundle.java:1118)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.content.Intent.getStringExtra(Intent.java:4624)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at org.mozilla.gecko.GeckoProfile.get(GeckoProfile.java:97)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at org.mozilla.gecko.BrowserApp.onCreate(BrowserApp.java:533)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.Activity.performCreate(Activity.java:5231)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-05 14:16:00.526: E/AndroidRuntime(25626):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
02-05 14:16:00.526: E/AndroidRuntime(25626):    ... 11 more

The Parcelable class is:

public class JMatadataBean implements Parcelable {

    private String              publisherRelation;
    private PublisherBean       publisherBean;
    private List<String>        keywordBeanList;


    public JournalMatadataBean() {
        super();
        keywordBeanList = new ArrayList<String>();
    }

    public JournalMatadataBean(Parcel source) {
        this();
        publisherRelation = source.readString();
        publisherBean = source.readParcelable(PublisherBean.class.getClassLoader());
        source.readList(keywordBeanList, String.class.getClassLoader());
    }

    public String getPublisherRelation() {
        return publisherRelation;
    }

    public void setPublisherRelation(String publisherRelation) {
        this.publisherRelation = publisherRelation;
    }

    public PublisherBean getPublisherBean() {
        return publisherBean;
    }

    public void setPublisherBean(PublisherBean publisherBean) {
        this.publisherBean = publisherBean;
    }

    public List<String> getKeywordBeanList() {
        return keywordBeanList;
    }
    public void addKeywordToList(String keyword) {
        this.keywordBeanList.add(keyword);
    }


    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(publisherRelation);
        dest.writeParcelable(publisherBean, flags);
        dest.writeList(keywordBeanList);
    }

public static final Creator<JournalMatadataBean> CREATOR = new Creator<JournalMatadataBean>() {

        @Override
        public JournalMatadataBean[] newArray(int size) {
            return new JournalMatadataBean[size];
        }

        @Override
        public JournalMatadataBean createFromParcel(Parcel source) {
            return new JournalMatadataBean(source);
        }
    };

    }

Also I am trying to open other implicit intent(Like making call, open camera, email) the same crash(android.os.BadParcelableException: ClassNotFoundException when unmarshalling) will be reported each time.

user1041858
  • 947
  • 2
  • 15
  • 32

1 Answers1

0

I override the startActivity() method to pass the data among all activities(Something like global variable) like this:

@Override
public void startActivity(Intent intent) {
    JMatadataBean jMatadataBean = getIntent().getParcelableExtra(KEY_CURRENT_JOURNAL);
    if (jMatadataBean != null) {
        intent.putExtra(KEY_CURRENT_JOURNAL, jMatadataBean);
    }
    Bundle bundle = getIntent().getBundleExtra(KEY_VOL_BUNDLE);
    intent.putExtra(KEY_VOL_BUNDLE, bundle);
    super.startActivity(intent);
}

But now I am using startActivityForResult() rather then startActivity() to start the browser intent and its working fine.

user1041858
  • 947
  • 2
  • 15
  • 32