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

Ral*_*zzo 11 android in-app-billing

这是步骤:

  1. 构建并运行InApp V3示例Trivial Drive示例
  2. 选择购买选项
  3. 点击后退按钮
  4. 再试一次

在截至2013年1月的版本中,您可能会收到

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

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

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

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

这是我添加的内容:

protected void onRestart() {
    super.onRestart();
    if (mHelper != null) mHelper.flagEndAsync();
}
Run Code Online (Sandbox Code Playgroud)

Cee*_*etn 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果我可以投票不止一次 - 我愿意.非常有用,并且没有记录在我阅读的任何内容中. (2认同)