android billing v3 - onActivityResult未被调用

时间:2013-04-19 10:51:19

标签: android android-intent in-app-purchase google-play in-app-billing

当尝试购买产品时(当我重新启动我的应用并查询iab购买的产品时,它会被视为已购买)。

问题是,在用户点击市场后,gui onActivityResult() 没有被称为。对于我自己的产品,使用测试帐户以及静态响应android.test.purchased。

会发生这种情况

而是显示以下错误消息

  

ERROR / Finsky(1374):[1] IntentUtils.createIntentForReceiver:无法找到com.ludocrazy.artisan的接收器

问题:我该怎么做,以便正确转发意图?我似乎错过了文档中的某些内容 - 但我认为已经多次检查过所有内容。

购买我使用以下内容:

PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
activity.startIntentSenderForResult(pendingIntent.getIntentSender(), myRequestCode, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));

TL; DR :基本上发生了什么:是发送BUY_INTENT工作,购买流程(用户gui)和一切正常,但是finsky无法找到我的活动,因此onActivityResult()没有被调用


附录:如果我添加一个扩展BroadcastReceiver的类,将相应的intent-filters添加到清单,然后错误消失,我在BroadcastReceiver.onReceive()上获得ACTION_NOTY。 但是这只包含额外字符串NOTIFICATION_ID,其他任何内容都不应与意图一起使用,以便onActivityResult()处理购买(例如额外内容:RESPONSE_CODE,INAPP_PURCHASE_DATA,INAPP_DATA_SIGNATURE)。 所以这不是一种解决方法。

我查看了IABv3中的TrivialDriveSample,阅读了IabHelper和其他实用程序类,阅读了google文档,并按照所有测试步骤进行了操作。我不知道还有什么其他的尝试/检查: - /

2 个答案:

答案 0 :(得分:1)

就我而言,问题与这篇文章有关:

Android Activity destroyed when it shouldn't be

基本上主要活动被完全摧毁为免费资源(在应用程序结算视图中)所以onActivityResult()永远不会被调用...一个可能的解决方案可能是正确保存活动状态,创建另一个“光”实际负责进行计费的活动(通过Intent传递sku)然后重新启动主活动。同样,这都假设您遇到了同样的问题并且您的主要活动被破坏了。

答案 1 :(得分:0)

我遇到这个问题的gremlin使用了一个负requestCode,它打破了结果调度机制。