libgdx / gdx-pay

A libGDX cross-platform API for InApp purchasing.
Apache License 2.0
225 stars 83 forks source link

Crash on code redeem #163

Closed Trurl101 closed 5 years ago

Trurl101 commented 6 years ago

Scenario: Use a GooglePlay-Code to redeem item. On some devices this leads to an crash with the following message. I tested this on four devices and it crashed on two of them (version 0.11.2)

It seems gdx-pay tries to convert a null String to JSON.

` Exception java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1032, result=-1, data=Intent { (has extras) }} to activity {XXX.android.AndroidLauncher}: java.lang.NullPointerException

android.app.ActivityThread.deliverResults (ActivityThread.java:3500) android.app.ActivityThread.handleSendResult (ActivityThread.java:3543) android.app.ActivityThread.access$1200 (ActivityThread.java:159) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1364) android.os.Handler.dispatchMessage (Handler.java:99) android.os.Looper.loop (Looper.java:176) android.app.ActivityThread.main (ActivityThread.java:5419) java.lang.reflect.Method.invokeNative (Method.java) java.lang.reflect.Method.invoke (Method.java:525) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1046) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:862) dalvik.system.NativeStart.main (NativeStart.java)

Caused by java.lang.NullPointerException:

org.json.JSONTokener.nextCleanInternal (JSONTokener.java:116) org.json.JSONTokener.nextValue (JSONTokener.java:94) org.json.JSONObject. (JSONObject.java:154) org.json.JSONObject. (JSONObject.java:171) com.badlogic.gdx.pay.android.googleplay.billing.converter.InAppPurchaseDataToTransactionConverter.convertJSONPurchaseToTransaction () com.badlogic.gdx.pay.android.googleplay.billing.converter.PurchaseResponseActivityResultConverter.convertToTransaction () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService.convertPurchaseResponseDataToTransaction () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService.access$300 () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService$2.handleResultOk () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService$2.onEvent () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService.onGdxPayActivityEvent () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService.access$800 () com.badlogic.gdx.pay.android.googleplay.billing.V3GoogleInAppBillingService$V3GoogleInAppBillingServiceAndroidEventListener.onActivityResult () com.badlogic.gdx.backends.android.AndroidApplication.onActivityResult () android.app.Activity.dispatchActivityResult (Activity.java:5563) android.app.ActivityThread.deliverResults (ActivityThread.java:3496) android.app.ActivityThread.handleSendResult (ActivityThread.java:3543) android.app.ActivityThread.access$1200 (ActivityThread.java:159) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1364) android.os.Handler.dispatchMessage (Handler.java:99) android.os.Looper.loop (Looper.java:176) android.app.ActivityThread.main (ActivityThread.java:5419) java.lang.reflect.Method.invokeNative (Method.java) java.lang.reflect.Method.invoke (Method.java:525) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1046) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:862) dalvik.system.NativeStart.main (NativeStart.java) `

Trurl101 commented 6 years ago

Probably a similiar issue here: https://github.com/libgdx/gdx-pay/issues/137

MrStahlfelge commented 5 years ago

Two possible approaches on this:

MrStahlfelge commented 5 years ago

Fixed with PR #188 and published with the latest 0.11.4-SNAPSHOT