개발/안드로이드
BillingClient의 launchBillingFlow에서 NullPointerException
장모
2021. 3. 25. 05:07
며칠 전 안드로이드의 BillingClient 버전을 2.0.3에서 3.0.3으로 올렸는데 아래와 같은 오류가 발생했다.
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
at com.android.billingclient.api.BillingClientImpl.launchBillingFlow(BillingClientImpl.java:48)
at com.myapp.MainActivity$launchPurchaseFlow$1.onSkuDetailsResponse(MainActivity.java:148)
at com.android.billingclient.api.zzac.run(zzac.java:4)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
외부에 노출된 코드엔 intent도 없고 가이드 문서들을 뒤져도 딱히 덜 넘긴게 없는데 확률적으로 발생하는 것도 아니고 계속 발생했다. 어지저찌하다가 launchBillingFlow를 호출하는 activity에 빈 Intent를 넣어 주는 것으로 땜빵했다.
if (activity.intent == null) {
activity.intent = Intnet()
}
playStoreBillingClient.launchBillingFlow(activity, purchaseParams)
코드를 볼 수 없으니 왜 getString을 호출하는지 모르겠다.
어쨋든 안죽고 결제도 되니 비긴걸로 하자...