Android Billing 4.0.0调用querySkuDetailsAsync无返回结果问题求助
问题根因及解决方案
1. 代码显性错误(直接导致无响应)
你的代码存在参数传递错误:你初始化了skuList并将目标SKU添加到该列表中,但构造SkuDetailsParams时调用setSkusList()传入的是未定义变量sku_Details,并非你实际构造好的skuList。该错误会导致结算库拿到无效SKU列表,直接不触发回调,就是你当前遇到的无响应问题。
修正方案:
将
.setSkusList(sku_Details)
修改为
.setSkusList(skuList)
2. 其他排查点
- 检查
BillingClient初始化配置:4.0版本结算库要求初始化时必须调用enablePendingPurchases(),即使你没有使用待处理购买能力,缺少该配置也可能导致回调异常。 - 检查测试设备的Google Play商店版本:必须不低于20.0.0才能兼容4.0版本结算库,低版本会出现无回调问题。
- 检查测试账号权限:测试账号必须在Google Play Console的许可测试名单内,测试用APK的版本号、签名必须和后台提交的测试包完全一致。
- 避免高频调用:短时间内多次重复调用
querySkuDetailsAsync会被Google Play限流机制拦截,无任何返回。 - 检查BILLING权限:确认应用正常持有
com.android.vending.BILLING权限,4.0版本结算库会自动合并该权限,如构建配置有主动移除权限的逻辑需要删掉。
3. 快速验证方案
你可以用硬编码的测试参数快速验证回调是否正常:
List<String> testSkuList = Collections.singletonList("MySKU_Character_001"); SkuDetailsParams params = SkuDetailsParams.newBuilder() .setSkusList(testSkuList) .setType(BillingClient.SkuType.SUBS) .build();
替换原有参数构造逻辑即可快速定位问题。
内容的提问来源于stack exchange,提问作者Maasaivatar
相关产品推荐
相关产品推荐

