使用Android InApp Billing V3示例。点击购买,后退按钮,再次购买会导致错误

时间:2013-01-19 06:16:21

标签: android in-app-billing

以下是步骤:

  1. 构建并运行InApp V3示例Trivial Drive示例
  2. 选择购买选项
  3. 点击后退按钮
  4. 再次尝试购买
  5. 在截至2013年1月的版本中,您可能会收到

      

    无法启动异步操作(launchPurchaseFlow),因为另一个异步   operation(launchPurchaseFlow)正在进行中。

    然后你不能使用IabHelper类的购买或库存方法,因为async标志不会被清除,除非你杀了你的应用程序。

    这是一个可能的解决方案:

    我将flagEndAsync方法设为public,并在onRestart方法中调用它。问题是:这是一个安全的解决方案吗?还有其他人看过这个问题吗?

    这是我添加的内容:

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

1 个答案:

答案 0 :(得分:37)

您确定没有删除以下代码(或忘记添加到您的活动中)

@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);
        }
    }