检查应用内购买

时间:2016-12-16 19:14:14

标签: java android in-app-purchase

根据查询购买商品中的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);
        }
    }
}

在日志中,我得到的最后一件事是“寻找购买”,没有任何追随者。看起来我应该在任何分支上得到一些东西,所以,有人看到我做错了吗?

没有错误或任何事情,它似乎永远不会回来。

1 个答案:

答案 0 :(得分:0)

问题出现在IabHelper(谷歌代码)深处的handler.post线上,它正在执行我传入的回调。处理程序.post被调用,买回调从来没有。我不确定那是怎么发生的。

我用AsyncTask替换了handler.post,并在onPostExecute方法中发布了我的回调调用,以使其在UI线程上运行。这似乎解决了我的问题。