yasirkula / UnityNativeShare

A Unity plugin to natively share files (images, videos, documents, etc.) and/or plain text on Android & iOS
MIT License
890 stars 131 forks source link

getArgument() returns null on Android #129

Open JamesKim2998 opened 2 years ago

JamesKim2998 commented 2 years ago

Description of the bug

Crash on Android caused by getArgument() returns null.

Reproduction steps

Unknown

Platform specs

Additional info

Caused by java.lang.NullPointerException
Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
com.yasirkula.unity.NativeShare.CreateIntentFromBundle (NativeShare.java:95)
com.yasirkula.unity.NativeShareCustomShareDialog.onCreateDialog (NativeShareCustomShareDialog.java:80)
android.app.DialogFragment.onGetLayoutInflater (DialogFragment.java:411)
android.app.Fragment.performGetLayoutInflater (Fragment.java:1339)
android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1298)
android.app.FragmentManagerImpl.addAddedFragments (FragmentManager.java:2426)
android.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2205)
android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2161)
android.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2062)
android.app.FragmentManagerImpl.dispatchMoveToState (FragmentManager.java:3051)
android.app.FragmentManagerImpl.dispatchStart (FragmentManager.java:3003)
android.app.FragmentController.dispatchStart (FragmentController.java:193)
android.app.Activity.performStart (Activity.java:7173)
android.app.ActivityThread.handleStartActivity (ActivityThread.java:2975)
android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:180)
android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165)
android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142)
android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1816)
android.os.Handler.dispatchMessage (Handler.java:106)
android.os.Looper.loop (Looper.java:193)
android.app.ActivityThread.main (ActivityThread.java:6718)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
yasirkula commented 2 years ago

Thank you for the detailed Issue.

The Bundle is passed from this line: https://github.com/yasirkula/UnityNativeShare/blob/9b1575d6e126b98b79b58c487e8cfd09125d1e3b/.github/AAR%20Source%20(Android)/java/com/yasirkula/unity/NativeShare.java#L76-L77

To this line: https://github.com/yasirkula/UnityNativeShare/blob/9b1575d6e126b98b79b58c487e8cfd09125d1e3b/.github/AAR%20Source%20(Android)/java/com/yasirkula/unity/NativeShareCustomShareDialogActivity.java#L36-L37

And is finally used at the line that the stacktrace points at: https://github.com/yasirkula/UnityNativeShare/blob/9b1575d6e126b98b79b58c487e8cfd09125d1e3b/.github/AAR%20Source%20(Android)/java/com/yasirkula/unity/NativeShare.java#L93-L95

At the moment, I don't know what sort of silly Android bug is turning this Bundle into a null nothingness. Is it something that you can continuously reproduce on your test device, did it occur once in a 1000 runs, or if you've pulled the crash information from Google Play, how often has this crash reportedly occurred?