2013-01-19 65 views
11

這裏的步驟:使用Android InApp Billing V3示例。點擊購買,後退按鈕,並再次購買導致錯誤

  1. 生成並運行該應用程式內V3樣品瑣碎的驅動例如
  2. 選擇購買選項
  3. 點擊後退按鈕
  4. 嘗試再次購買

在版本2013年1月的你可能收到

由於另一個async 操作(launchPurchaseFlow)正在進行,無法啓動異步操作(launchPurchaseFlow)。

然後,您不能使用IabHelper類的購買或庫存方法,因爲異步標誌不會清除,除非您終止您的應用程序。

這裏是一個可能的解決方案:

我做了flagEndAsync方法公開,並呼籲它在onRestart方法。問題是:這是一個安全的解決方案嗎?還有誰看過這個問題?

這是我補充的內容:

protected void onRestart() { 
    super.onRestart(); 
    if (mHelper != null) mHelper.flagEndAsync(); 
} 

回答

36

你確定你沒有刪除下面的代碼(或忘記添加到您的活動)

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // Pass on the activity result to the helper for handling 
     if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { 
      // not handled, so handle it ourselves (here's where you'd 
      // perform any handling of activity results not related to in-app 
      // billing... 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 
+0

哇,謝謝。我確實想念那部分。我合併了它,似乎糾正它。再次感謝! –

+2

如果我可以多次投票 - 我會的。如此難以置信的有用,並沒有記錄在我讀的任何事情。 –

+1

我面臨着同樣的問題,我使用** android.test.purchased **,但'onActivityResult()'甚至沒有被調用一旦項目被購買,所以如何處理這種情況下,當用戶嘗試購買已經購買的物品 –