Хотя Google подтвердил погрузили обновление, имеющее исправление, но следующий блок попытка поймать по крайней мере предотвращает аварии
int querySkuDetails(String itemType, Inventory inv, List<String> moreSkus)
throws RemoteException, JSONException {
logDebug("Querying SKU details.");
ArrayList<String> skuList = new ArrayList<String>();
skuList.addAll(inv.getAllOwnedSkus(itemType));
if (moreSkus != null) {
for (String sku : moreSkus) {
if (!skuList.contains(sku)) {
skuList.add(sku);
}
}
}
if (skuList.size() == 0) {
logDebug("queryPrices: nothing to do because there are no SKUs.");
return BILLING_RESPONSE_RESULT_OK;
}
// NullPointer crash reported through PlayStore forums
if (mService == null) {
return IABHELPER_SERVICE_UNAVAILABLE;
}
Bundle querySkus = new Bundle();
querySkus.putStringArrayList(GET_SKU_DETAILS_ITEM_LIST, skuList);
try {
Bundle skuDetails = mService.getSkuDetails(3, mContext.getPackageName(), itemType, querySkus);
if (!skuDetails.containsKey(RESPONSE_GET_SKU_DETAILS_LIST)) {
int response = getResponseCodeFromBundle(skuDetails);
if (response != BILLING_RESPONSE_RESULT_OK) {
logDebug("getSkuDetails() failed: " + getResponseDesc(response));
return response;
}
else {
logError("getSkuDetails() returned a bundle with neither an error nor a detail list.");
return IABHELPER_BAD_RESPONSE;
}
}
ArrayList<String> responseList = skuDetails.getStringArrayList(RESPONSE_GET_SKU_DETAILS_LIST);
for (String thisResponse : responseList) {
SkuDetails d = new SkuDetails(itemType, thisResponse);
logDebug("Got sku details: " + d);
inv.addSkuDetails(d);
}
return BILLING_RESPONSE_RESULT_OK;
}
// Security Exception due to missing permissions reported through PlayStore forums
catch (SecurityException e)
{
return IABHELPER_SERVICE_UNAVAILABLE;
}
}
Обратите внимание, что только изменение метода Int querySkuDetails (Str ing itemType, Inventory inv, List moreSkus) является блоком catch catch исключения безопасности. Остальное все остается таким же.
Его, вероятно, что исключение говорит, ваше отсутствие разрешения READ_PHONE_STATE –
Я думаю, что более вероятно, это в манифесте, но оно не было предоставлено на устройствах зефира. https://developer.android.com/training/permissions/requesting.html – DeeV
Имейте в виду, что даже если вы нацеливаете Api-19, пользователи из Marshmallow могут вручную аннулировать разрешение после установки. –