根据查询购买商品中的https://developer.android.com/training/in-app-billing/purchase-iab-products.html说明,我正在检查购买的商品。
我的代码如下所示:
private void lookForPurchases() {
IabHelper.QueryInventoryFinishedListener lookForPurchasesListener = new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
if (result.isFailure()) {
Log.e(TAG, "Error checking for purchases:" + result.toString());
}
else {
Log.d(TAG, "Processing purchases." + inventory.toString());
if(inventory.hasPurchase(SKU_LEXCOINS_100)){
Purchase purchase = inventory.getPurchase(SKU_LEXCOINS_100);
consumeCoinPurchase(purchase);
}
if(inventory.hasPurchase(SKU_LEXCOINS_550)){
Purchase purchase = inventory.getPurchase(SKU_LEXCOINS_550);
consumeCoinPurchase(purchase);
}
if(inventory.hasPurchase(SKU_LEXCOINS_1200)){
Purchase purchase = inventory.getPurchase(SKU_LEXCOINS_1200);
consumeCoinPurchase(purchase);
}
}
}
};
Log.i(TAG, "Looking for purchases");
if(inAppBillingHelper == null) {
Log.e(TAG, "Null preventing query inventory");
} else {
try {
inAppBillingHelper.queryInventoryAsync(lookForPurchasesListener);
} catch (IabHelper.IabAsyncInProgressException ex) {
Log.e(TAG, "Error retrieving purchases.", ex);
}
}
}
在日志中,我得到的最后一件事是“寻找购买”,没有任何追随者。看起来我应该在任何分支上得到一些东西,所以,有人看到我做错了吗?
没有错误或任何事情,它似乎永远不会回来。
答案 0 :(得分:0)
问题出现在IabHelper(谷歌代码)深处的handler.post
线上,它正在执行我传入的回调。处理程序.post被调用,买回调从来没有。我不确定那是怎么发生的。
我用AsyncTask替换了handler.post,并在onPostExecute
方法中发布了我的回调调用,以使其在UI线程上运行。这似乎解决了我的问题。