微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 客栈应用 BillingFlowParams 构建器因 java.lang.IllegalArgumentException 而失败

如何解决Android 客栈应用 BillingFlowParams 构建器因 java.lang.IllegalArgumentException 而失败

在我的 android 应用程序中,我有一个弹出 Activity,它出现在 MainActivity 前面,其中包含用户要购买的产品列表。当用户选择产品时 - 它调用 MainActivity.launchBilling(String skuId)

弹出活动:

recyclerViewDonate.addOnItemTouchListener(
            new RecyclerItemClickListener(this,recyclerViewDonate,new RecyclerItemClickListener.OnItemClickListener() {
                @Override public void onItemClick(View view,int position) {
                    selectDonateSku = (String) list_sku_id.get(position);
                    MainActivity.launchBilling(selectDonateSku);
                    finish();
                }

                @Override public void onLongItemClick(View view,int position) {
                    selectDonateSku = (String) list_sku_id.get(position);
                    MainActivity.launchBilling(selectDonateSku);
                    finish();
                }
            })
    );

主要活动:

public static void launchBilling(String skuId){
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
    billingClient.launchBillingFlow(instance,billingFlowParams);
};

有些时候我在生产报告中收到错误。它说应用程序在 BillingFlowParams 构建器上崩溃了。 我不明白这次失败的根本原因是什么。有人可以建议如何解决这个问题吗?

错误

java.lang.IllegalArgumentException: at com.android.billingclient.api.BillingFlowParams$Builder.build(com.android.billingclient:billing@@3.0.0:23)
at com.nosik.ochoforecasts.MainActivity.launchBilling (MainActivity.java:1136)
  at com.nosik.ochoforecasts.DonateActivity$1.onItemClick (DonateActivity.java:69)
  at com.nosik.ochoforecasts.RecyclerItemClickListener.onInterceptTouchEvent (RecyclerItemClickListener.java:34)
  at androidx.recyclerview.widget.RecyclerView.findInterceptingOnItemTouchListener (RecyclerView.java:3151)
  at androidx.recyclerview.widget.RecyclerView.dispatchToOnItemTouchListeners (RecyclerView.java:3122)
  at androidx.recyclerview.widget.RecyclerView.onTouchEvent (RecyclerView.java:3283)
  at android.view.View.dispatchTouchEvent (View.java:14376)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3857)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3535)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3863)
  at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3551)
  at com.android.internal.policy.DecorView.superdispatchTouchEvent (DecorView.java:729)
  at com.android.internal.policy.PhoneWindow.superdispatchTouchEvent (PhoneWindow.java:1922)
  at android.app.Activity.dispatchTouchEvent (Activity.java:4051)
  at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:69)
  at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:687)
  at android.view.View.dispatchPointerEvent (View.java:14644)
  at android.view.ViewRootImpl$ViewPostImeInputStage.processpointerEvent (ViewRootImpl.java:6478)
  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:6265)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5703)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5756)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5722)
  at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:5878)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5730)
  at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:5935)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5703)
  at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:5756)
  at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:5722)
  at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:5730)
  at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:5703)
  at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:8862)
  at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:8723)
  at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:8676)
  at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:8998)
  at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:194)
  at android.os.MessageQueue.nativePollOnce (Native Method)
  at android.os.MessageQueue.next (MessageQueue.java:336)
  at android.os.Looper.loop (Looper.java:197)
  at android.app.ActivityThread.main (ActivityThread.java:7814)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)```

解决方法

"有人可以建议如何解决这个问题吗?"

答案:我们无法修复它,因为这是 billingclient 库的问题。已经上报google,归类为BUG,需要等待billingclient库的新版本(3.02以上)

点击 issuetracker 页面上的星星,让谷歌知道你也有这个问题: https://issuetracker.google.com/180032099

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。