我一直在尝试使用应用内付款构建一个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商店应用,因此在这里我无法弄清楚自己做错了什么。
答案 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和清单文件,以查看它们是否也具有这样的定义,但是没有。哦,很好。