在 BillingClient.launchBillingFlow 期间 Android Play 商店崩溃

Jus*_*tin 3 android in-app-billing

尝试为应用内项目启动计费时,我收到以下错误。

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Intent.getStringExtra(java.lang.String)”

代码很简单。用户选择一个项目。然后我将该项目传递给 querySkuDetailsAsync。我得到并看到结果。由于 API 原因,我然后调用...

SkuDetails skuDetails = new SkuDetails(skuDetails.getOriginalJSON());
BillingFlowParams flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
BillingResult billingResult = client.launchBillingFlow(activity, flowParams);
Run Code Online (Sandbox Code Playgroud)

然后,大多数时候,我得到了 NPE。一切正常。我不知道是什么变化导致了这个问题。

请注意,我确实尝试过直接传递 skuDetails,以防 JSON 是问题所在。它没有用。

计费库不是开源的,所以我不知道如何解决这个问题。

Jus*_*tin 7

我找到了解决方案。如果我在调用“launchBillingFlow”之前调用activity.setIntent(new Intent()),错误就会消失。似乎是现在关闭源的计费库中的一个错误。

  • 我还没举报呢 我在谷歌和错误报告方面运气不佳。他们可能会拒绝承认这个问题,除非我生成完整的错误报告,为他们构建一个示例应用程序,然后飞往旧金山向他们展示如何亲自重现它。 (4认同)