본문 바로가기
개발/안드로이드

BillingClient의 launchBillingFlow에서 NullPointerException

by 장모 2021. 3. 25.

 

며칠 전 안드로이드의 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을 호출하는지 모르겠다.

 

어쨋든 안죽고 결제도 되니 비긴걸로 하자...

 

 

 

 

댓글