如果在调用querySkuDetailsAsync时返回空列表,可能是以下几种情况:
- 商品ID缺失或未正确设置
- 没有发布该应用程序或该应用程序版本以及还未发布到当前用户所使用的设备上
- 未正确配置Google Play控制台中的商品
- 设备上有Google Play Store服务问题
以下是一些技巧和代码示例来解决这些问题:
- 检查商品ID是否匹配并在Google Play控制台中设置:
String[] productIds = {"product_id1", "product_id2"};
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(Arrays.asList(productIds)).setType(INAPP);
- 确认您的应用程序已使用相应的应用程序版本进行发布,并已发布到当前设备:
AppUpdateManager updateManager = AppUpdateManagerFactory.create(context);
Task appUpdateInfoTask = updateManager.getAppUpdateInfo();
appUpdateInfoTask.addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(AppUpdateInfo appUpdateInfo) {
if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
updateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, activity, appUpdateRequestCode);
}
}
});
- 确认Google Play控制台中正确配置了商品:
List skuList = new ArrayList<>();
skuList.add("premium_upgrade"); skuList.add("gas");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(SkuType.INAPP);
bp.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult result, List skuDetailsList) {
if (result.getResponseCode() == BillingResponseCode.OK && skuDetailsList != null) {
for (SkuDetails skuDetails :