react-native-share: Crash on Android after sharing to Google Drive
Steps to reproduce
- Share to Google Drive using:
const result = await Share.open({
message: "message",
subject: "subject",
title: "title"
});
- Wait for the callback
- App crashes Before the crash, I can see the result:
{
app: "com.google.android.apps.docs/com.google.android.apps.docs.shareitem.UploadMenuActivity",
message: "com.google.android.apps.docs/com.google.android.apps.docs.shareitem.UploadMenuActivity"
}
Error on logcat:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=16845, result=-1, data=Intent { dat=content://com.google.android.apps.docs.storage.legacy/enc=hwS2P-QLZXeplE6wliNceO9lduRF6MaJHht7KkEMtWX-olNpX0S5laUmKOPmMBE0NnnhjD_ZzRB0 LS-zLUFkB4eE8DPDjGNP01YlUizxqUo3xx8b3oenNLEPzQhPYToVt1Crhw== launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } (has extras) }} to activity {br.com.test/br.com.test.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.apps.docs.cello.data.CelloEntrySpec at android.app.ActivityThread.deliverResults(ActivityThread.java:4520) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4563) at android.app.ActivityThread.-wrap22(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.apps.docs.cello.data.CelloEntrySpec at android.os.Parcel.readParcelableCreator(Parcel.java:2555) at android.os.Parcel.readParcelable(Parcel.java:2481) at android.os.Parcel.readValue(Parcel.java:2384) at android.os.Parcel.readArrayMapInternal(Parcel.java:2737) at android.os.BaseBundle.unparcel(BaseBundle.java:269) at android.os.BaseBundle.getString(BaseBundle.java:992) at android.content.Intent.getStringExtra(Intent.java:6749) at com.facebook.internal.CallbackManagerImpl.isPurchaseIntent(CallbackManagerImpl.java:130) at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:90)
Expected behaviour
Application should not crash
Actual behaviour
Application is crashing
Environment
- React Native version: 0.59.8
- React Native platform + platform version: Android (multiple versions)
react-native-share
Version: 1.2.1
Important
If I downgrade react-native-share version to 1.1.3, it works.
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 16 (1 by maintainers)
I think it should use startActivity for ACTION_SEND instead of startActivityForResult.
However, it will not know the user cancel it or not. It means that failOnCancel will be useless. It works for my use case, I’m not sure it also works for others?
Find a solution.
Modify below code in social/ShareIntent.java
Change
To