У меня имеется список с разными количествами монет. Типа этого:
------------------------
10 монет 10руб.
------------------------
20 монет 20руб.
------------------------
30 монет 30руб.
------------------------
И это в диалоговом окне, то есть DialogFragment
.
У меня не покупается, и при повторной попытке купить, выскакивает ошибка:
IabResult: Unable to buy item (response: 7:Item Already Owned)
Код:
в onCreateView
вызываю setupBilling()
private void setupBilling() {
mHelper = new IabHelper(getActivity(), CheckoutApplication.getPublicKey());
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed: " +
result);
try {
mHelper.queryInventoryAsync(mReceivedInventoryListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
} else {
Log.d(TAG, "In-app Billing is set up OK");
}
}
});
}
При клике на пункт ListView
вызываю метод buyCoins(String ProductID)
, с параметром ID продукта:
private void buyCoins(String name) {
PRODUCT_NAME = name;
try {
mHelper.launchPurchaseFlow(getActivity(), PRODUCT_NAME, RC_REQUEST, mPurchaseFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
И остальные методы Хелпера
:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if (result.isFailure()) {
Log.d(TAG, "error in mPurchaseFinishedListener: " + result);
} else if (purchase.getSku().equals(PRODUCT_NAME)) {
try {
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
}
};
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
Log.d(TAG, "error in mReceivedInventoryListener: " + result);
} else {
for (CoinsPriceModel coinsPriceModel : coinsPriceModelList){
PRODUCT_NAME = coinsPriceModel.getName();
Purchase purchase = inventory.getPurchase(PRODUCT_NAME);
try {
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
} catch (IabHelper.IabAsyncInProgressException e) {
e.printStackTrace();
}
}
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
if (result.isSuccess()) {
ToastUtils.shortToast(getActivity(), "SUCCESS in mConsumeFinishedListener");
} else {
Log.d(TAG, "error in mConsumeFinishedListener: " + result);
}
}
};
Мучаюсь уже 2-й день. Погуглил, ни один вариант мне не помог. ЗЫ: Первый раз сталкиваюсь с IAB
Вопрос: Что я делаю не правильно, как исправить, подскажите???
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Возможно ли как то чтобы в разметке, содержащую ScrollView сделать так чтобы он не пролистывался вниз, дело в том что видимо какой то баг, при переходе...
С консоли нужно считать переменную типа double, затем умножить ее на 6, округлить в меньшую сторону, результат поместить в переменную типа int и вывести...
Нужно реализовать такую фишку: приложение просит выбрать в файлах изображение,с помощью установленных программ (например "Мои файлы"),чтобы...
Если использовать setMyLocationEnabled(true) и дать приложению разрешение на использование местоположения, то приложение просто вылетает при запуске