Я использую внутреннюю тестовую версию, и моя тестовая учетная запись подключена.Запуск процесса выставления счетов инициируется кнопкой.
Однако есть несколько проблем.
Список покупок пуст, что я не считаю нормальным.
Код: Выделить всё
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List
purchases) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
for (Purchase purchase : purchases) {
handlePurchase(purchase);
}
} else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
} else {
}
Если я попытаюсь принудительно протестировать функциональность handlePurchases(), передав этот фрагмент оператору else в onPurchasesUpdated(), это приведет к ошибке ссылки на нулевой объект, поскольку он пытается выполнить итерацию по пустому списку.
Код: Выделить всё
for (Purchase purchase : purchases) {
handlePurchase(purchase);
}
Чтобы исправить это, я попытался вызвать ConsumerAsync(), как показано в коде ниже.
Код: Выделить всё
public void handlePurchase(Purchase purchase) {
if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
// Grant entitlement to the user.
ConsumeParams consumeParams =
ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
client.consumeAsync(consumeParams, consumeResponseListener);
}
}
Мой вопрос: почему ошибка ITEM_ALREADY_OWNED все еще остается? и почему список покупок пуст.
Подробнее здесь: https://stackoverflow.com/questions/594 ... -owned-and