安卓计费客户端错误:"Exception while launching billing flow: ; for sku: android.test.purchased; try to reconne



我一直在尝试使用应用内支付构建一个 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 商店服务现在未连接 - 潜在的瞬态"(https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponse(。我已经尝试了测试产品ID(android.test.purchased(,以及我创建的真实产品ID,结果相同。我还重新启动了(物理(设备。我可以像往常一样访问Play商店应用程序,所以我无法弄清楚我在这里做错了什么。

我得到了同样的错误:

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

我的代码几乎完全基于 Google 的官方示例"TrivialDrive_v2",使用计费库版本 1.2.2。我的主要活动扩展了NativeActivity。这无济于事。经过一天的寻找可能的原因,我用完了主意 😥

看着日志猫,我偶然注意到了这条消息

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

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

<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 和清单文件,看看它们是否也有这样的定义,但它们没有。哦,好吧。

如果你在一个活动中,你可以使用

Activity activity = this;

或者如果你在一个片段中,你可以使用

Activity activity = getActivity();

检查这是否有帮助

最新更新