Сообщения об ошибках на этом не были полезны по меньшей мере. Однако, когда мне довелось подставить:
com.android.billingclient.api.SkuDetails//add prefix 'com.android.billingclient.api.'
для каждого экземпляра 'SkuDetails', странные ошибки, подобные тем, что были в этом фрагменте кода, волшебным образом прояснились. Также добавление префикса перед каждым экземпляром «Покупки»:
com.android.billingclient.api.Purchase//also add prefix before Purchase
исправляет другие подобные ошибки.
Вот рабочий код с двумя заменами:
List<String> skuList = new ArrayList<> ();
skuList.add("item1");
skuList.add("item2");
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
billingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult,
List<com.android.billingclient.api.SkuDetails> skuDetailsList) {
if (billingResult.getResponseCode() ==
BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
for (com.android.billingclient.api.SkuDetails skuDetails : skuDetailsList) {
mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);//will use this for purchase calls
}
}
}
});