Android Billing V3转V5报错:无法解析PurchasesResult等相关API
Android Billing 3 迁移至 Billing 5 适配方案
Billing 5 彻底移除了同步查询购买记录的 queryPurchases() 方法及 PurchasesResult 类,必须改用异步的 queryPurchasesAsync() 实现相同逻辑。以下是修改后的代码:
@Override public void onBillingSetupFinished(@NotNull BillingResult billingResult) { if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) { // 使用异步方法查询内购购买记录 billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder() .setProductType(BillingClient.ProductType.INAPP) .build(), new PurchasesResponseListener() { @Override public void onQueryPurchasesResponse(@NotNull BillingResult queryResult, @NotNull List<Purchase> purchasesList) { if (queryResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchasesList != null) { for (Purchase purchase : purchasesList) { if (purchase.getSku().equals("premium_upgrade")) { getDataManager().setIsPremium(true); handlePurchase(purchase); break; } } } } }); } }
关键修改点说明:
- 替换原同步方法
queryPurchases(BillingClient.SkuType.INAPP)为异步的queryPurchasesAsync(),需通过QueryPurchasesParams指定产品类型(注意常量从SkuType改为ProductType) - 移除
PurchasesResult相关逻辑,购买记录列表直接通过PurchasesResponseListener的回调参数获取 - 在回调内先校验查询响应码,再遍历购买列表处理目标SKU的购买逻辑
内容的提问来源于stack exchange,提问作者WaLiD FeKrY
相关产品推荐
相关产品推荐

