Во -первых, я хотел бы понять, что предложение может быть странным, потому что оно написано с использованием переводчика. Встроенный в журнал, функция обратного вызова, которую я получил, позвонив в «billingClient.launchbillingflow» содержит информацию о покупке в «списке». «QuerPurchasasasAsync» может получить информацию о покупке, которая не является «употреблением», но я не могу найти причину, по которой нет информации о покупке.
Вы знаете, как решить эту проблему? Если вы это сделаете, пожалуйста, помогите. Спасибо.
BuyListener _buyListener = null;
private void init()
{
_buyListener = new BuyListener();
...
_billingClient = BillingClient.newBuilder(_activity.getApplicationContext())
.enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
.setListener(_buyListener)
.build();
}
public void onProductDetailsResponse(BillingResult billingResult, List productDetailsList)
{
if(BillingClient.BillingResponseCode.OK == billingResult.getResponseCode())
{
...
BillingResult result = _billingClient.launchBillingFlow(_activity, billingFlowParams);
if(BillingClient.BillingResponseCode.OK != result.getResponseCode())
{
log('A'); // not show
}
}
}
// class BuyListener
public void onPurchasesUpdated(BillingResult billingResult, List purchases)
{
if(BillingClient.BillingResponseCode.OK != billingResult.getResponseCode())
{
log('B'); // not show
return;
}
if(null == list)
{
log('C'); // not show
return;
}
if(1 != list.size())
{
log('D : '+list.size()); // not show
return;
}
log('E:'+list.get(0).getProducts().get()); // show E : products[0]
getReceipts();
}
public void getReceipts()
{
if(null == _billingClient)
{
log('F') // not show
}
int state = _billingClient.getConnectionState();
if(BillingClient.ConnectionState.CONNECTED != state)
{
log('G') // not Show
}
QueryPurchasesParams params = QueryPurchasesParams.newBuilder()
.setProductType(BillingClient.ProductType.INAPP)
.build();
_billingClient.queryPurchaseAsync(params, new GetReceiptsListener());
}
//class GetReceiptsListener
public void onQueryPurchasesResponse(BillingResult billingResult, List purchases)
{
if(BillingClient.BillingResponseCode.OK != billingResult.getResponseCode())
{
log('H'); // not show
return;
}
if(null == list)
{
log('I'); // not show
return;
}
if(1 != list.size())
{
log('J : '+list.size()); // show J : 0
return;
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... e-is-empty