You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:30:58