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

Android Billing从V3迁移至V5:PurchasesResult等符号无法解析求助

Android Billing 3 迁移至 Billing 5:onBillingSetupFinished 函数适配方案

Billing Library 5.x 彻底移除了同步的queryPurchases()方法以及Purchase.PurchasesResult类,这是你遇到无法解析相关类和方法的核心原因。必须改用异步的queryPurchasesAsync()方法来查询用户的已购项目,以下是修改后的完整实现:

@Override
public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
        // 构建查询参数,指定商品类型为INAPP
        QueryPurchasesParams queryParams = QueryPurchasesParams.newBuilder()
                .setProductType(BillingClient.ProductType.INAPP)
                .build();
        
        // 异步查询已购项目
        billingClient.queryPurchasesAsync(queryParams, new QueryPurchasesResponseListener() {
            @Override
            public void onQueryPurchasesResponse(@NonNull BillingResult result, @NonNull List<Purchase> purchases) {
                if (result.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    if (purchases != null && !purchases.isEmpty()) {
                        handlePurchases(purchases);
                    } else {
                        // 无已购项目,处理未购买/退款/取消状态
                        savePurchaseValueToPref(false);
                        removepremium();
                    }
                } else {
                    // 查询失败,兜底处理未购买状态
                    savePurchaseValueToPref(false);
                    removepremium();
                }
            }
        });
    }
}

核心修改点说明

  • 弃用同步查询:Billing 5强制要求异步查询以避免阻塞主线程,用queryPurchasesAsync()替代原同步的queryPurchases()
  • 参数构建方式变更:通过QueryPurchasesParams.newBuilder()明确指定要查询的商品类型(INAPP或SUBS)
  • 直接获取Purchase列表:异步回调的onQueryPurchasesResponse方法直接返回List<Purchase>,无需依赖已移除的PurchasesResult类
  • 补充错误处理:新增查询操作本身失败的分支处理,保证状态逻辑的完整性

内容的提问来源于stack exchange,提问作者RGS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:15:43