2015-12-21 31 views
2

后处置labHelper谷歌钱包的我整合谷歌钱包,并开始labHelper在buying.Normally labHelper的开头是在开始活动的时间的onCreate在处置活动时间onDestroy。因此,即使我们没有使用钱包服务labHelper是在活动开始时创建的。安卓:如何购买

所以我想在开始购买的时候开始labHelperlabhelperPurchase完成监听器处理。我在购买后出现异常情况,但货币转账也在那里发生。

一次购买后,当我尝试购买第二次显示 “事务失败

LabHelper Intialization

mHelper = new IabHelper(FrendyActivity.this, base64EncodedPublicKey); 

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
     public void onIabSetupFinished(IabResult result) { 
      Log.d(TAG, "Setup finished."); 
      // Have we been disposed of in the meantime? If so, quit. 
      if (mHelper == null) 
       return; 

      if (!result.isSuccess()) { 
       Log.d(TAG, "In-app Billing setup failed: " + result); 
      } else { 
       Log.d(TAG, "In-app Billing is set up OK"); 
      } 
     } 

    }); 

采购这是处置

代码后
mHelper.launchPurchaseFlow(FrendyActivity.this, 
      SkuItem, code, 
      mPurchaseFinishedListener, type); 


    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new     IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) { 
    if (mHelper != null) 
     mHelper.dispose(); 
    mHelper = null 

dealWithPurchaseSuccess(result, purchase); 
} 

一次购买后,当我再次尝试购买producat我得到错误的labHelper已经开始

如何在购买后妥善处置labHelper?

+0

可以粘贴购买项目的一些代码.. – virendrao

+0

更新,代码@virendrao –

+0

你确定这是申购代码,因为我记得我们称之为像launchPurchaseFlow .. – virendrao

回答

1

简单的回答:你不应该在购买后处置iabHelper。 API不是这样设计的。

你甚至不应该尝试在除onCreate和onDestroy之外的其他方法中启动和停止API。但是,如果你真的想要它,并且你选择这样做,首先创建一个iabhelper的新实例,不要重复使用它。

但我建议您删除onIabPurchaseFinished中的dispose调用,并仅在onDestroy方法中调用它。

+0

如果我们看在设置中运行服务我们无法看到“com.app.vendingbilling”服务正在运行。该服务仅在购买时在whatsapp中运行。但是这里的自动售票服务在应用程序启动时运行,即使不购买。 @Rolfツ –

+0

这可能是因为whatsapp中的购买流程仅在用户导航到购买活动时才开始。 –

+0

好的,谢谢@Rolfツ –