Android BillingClient错误:“启动计费流程时发生异常:;对于sku:android.test.purchased;尝试重新连接”

时间:2019-04-20 02:46:37

标签: android

我一直在尝试使用应用内付款构建一个android应用,但无法设置它。我正在拨打以下电话:

      Activity activity = new Activity();
      billingClient = BillingClient.newBuilder(this).setListener(this).build();
      billingClient.startConnection(new BillingClientStateListener() {
          @Override
          public void onBillingSetupFinished(@BillingResponse int billingResponseCode) {
              if (billingResponseCode == BillingResponse.OK) {
                  List<String> skuList = new ArrayList<> ();
                  skuList.add("android.test.purchased");
                  SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
                  params.setSkusList(skuList).setType(SkuType.INAPP);
                  billingClient.querySkuDetailsAsync(params.build(),
                          (responseCode, skuDetailsList) -> {
                              if (responseCode == BillingResponse.OK
                                      && skuDetailsList != null) {
                                  for (SkuDetails skuDetails : skuDetailsList) {
                                      System.out.println("The price is "+skuDetails.getPrice());
                                      BillingFlowParams flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
                                      int code = billingClient.launchBillingFlow(activity,flowParams);
                                      System.out.println("Code is: "+code);
                                  }
                              }
                          });
              }
          }
          @Override
          public void onBillingServiceDisconnected() {
              System.out.print("Billing disconnected?");
          }
      });

运行此命令时,我得到的代码是-1,并且得到错误:Exception while launching billing flow: ; for sku: android.test.purchased; try to reconnect我发现错误代码-1是“ Play Store服务现在未连接-可能处于过渡状态” (https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponse)。我已经尝试了两个测试产品ID(android.test.purchased)以及我创建的真实产品ID,但结果相同。我还重新启动了(物理)设备。我可以像平常一样访问Play商店应用,因此在这里我无法弄清楚自己做错了什么。

2 个答案:

答案 0 :(得分:0)

如果您正在参加活动,则可以使用

Activity activity = this;

或者如果您位于片段中,则可以使用

Activity activity = getActivity();

检查是否有帮助

答案 1 :(得分:0)

我遇到了同样的错误:

W/BillingClient(25145): Exception while launching billing flow: ; for sku: someSKU; try to reconnect

,我的代码几乎完全基于Google的官方示例“ TrivialDrive_v2”(使用计费库1.2.2版)。我的主要活动是扩展NativeActivity。 This没有帮助。在寻找可能的原因的一天后,我没了主意ran

看着我偶然发现的日志消息

I/ActivityManager(962): START u0 {cmp=com.mypackage.myapp/com.android.billingclient.api.ProxyBillingActivity (has extras)} from uid 10116 on display 0

此消息没有任何问题,这只是一个信息,但这是错误发生之前的最后一条消息。所以我用谷歌搜索“ ProxyBillingActivity”,发现this。出于好奇,我添加了以下定义

<activity
    android:name="com.android.billingclient.api.ProxyBillingActivity"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

到我的清单文件中,瞧!计费工程。然后,我搜索了整个“ TrivialDrive_v2”示例源以及所有的xml和清单文件,以查看它们是否也具有这样的定义,但是没有。哦,很好。