2016-12-16 123 views
0

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

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

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