2013-01-14 40 views
2

我正在使用應用內結算教程開始實施。IabHelper中的應用內結算問題

  • 我下載的示例應用程序
  • 得到了來自開發者控制檯
  • 將適當的權限在我的清單
  • 得到了AIDL文件和所有UTIL java文件到我的項目我的鑰匙和執行以下代碼到我的OnCreate事件......

    if (GooglePlayVersion) 
    { 
        try 
        { 
        mHelper = new IabHelper(this, base64EncodedPublicKey); 
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
          public void onIabSetupFinished(IabResult result) { 
           if (!result.isSuccess()) 
           // Oh noes, there was a problem. 
           debugLog("Problem setting up In-app Billing: " + result, 0);   
           debugLog("IAB got bound", 0); 
          } 
         }); 
        } 
        catch (Exception e){ 
         debugLog("iab exception " + e.getMessage(), 1); 
        } 
    } 
    

我的應用程序在mHelper.startsetup行上吹。沒有例外。當我走過時,一旦離開那條線,調試就不會進入下一行。我的應用永遠不會啓動。當然,如果我將GooglePlayVersion設置爲false,則所有內容都可以正常運行。

編輯:由於我的帖子昨天我發現一個異常確實是由mHelper.startSetup行引發的。 Stored Exception Found Binder invocation to an incorrect interface [Ljava.lang.StackTraceElement;@405a8478

我發現其他人發佈的帖子中有這個例外,並且有人建議我的aidl文件可能與計費接口不匹配。我從下載的trivialdrivessample程序中獲得了aidl文件,只更改了包裝行。

回答

2

Gary,看起來您在應用內結算方面面臨啓動方面的挑戰。這不是一個新問題。應用內結算是一項真正令人痛苦的工作。很多人都在努力工作。我建議你先讓它獨立工作。然後將項目的工作部分集成到您的代碼中。我建議this

其他鏈接可以在stackoverflow找到,我不會在這個時候做一個搜索。

+0

感謝您的提醒和鏈接。我決定首先在沒有應用內結算的情況下將應用投放市場,然後爲下一個版本處理這些問題。 –

+0

好的電話,api的寫得很糟糕。因此,您需要竭盡全力將其整合。但一旦它在那裏,它的穩定。這就是說,我聽說4.0已經解決了這個問題。仍然需要研究它。 – Siddharth

+0

Siddharth:有關4.0的消息嗎?是時候讓我決定等待4還是實現3.謝謝 –

7

您不應該更改aidl文件的包名稱。將aidl文件放在您的src目錄下,其名稱爲com.android.vending.billing包。

3

雖然我一步一步按照Google Android網站的指示,但我遇到了同樣的問題。他們沒有清楚而正確地提到在哪裏更改軟件包名稱。所以爲了解決這個問題,如果你移動.aidl文件來讓com.myawesome.app.main說,那麼你不僅要在所有文件的頭文件中更改包聲明,而且還要在labHelper的這一行中java文件:

Intent serviceIntent = new Intent("com.myawesome.app.main.InAppBillingService.BIND"); 

默認你不想要的是:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); 

這固定它,我希望它會解決它的你。

+0

我想你應該也改變IabBroadcastReceiver.ACTION – Lez77