当尝试购买产品时(当我重新启动我的应用并查询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文档,并按照所有测试步骤进行了操作。我不知道还有什么其他的尝试/检查: - /
答案 0 :(得分:1)
就我而言,问题与这篇文章有关:
Android Activity destroyed when it shouldn't be
基本上主要活动被完全摧毁为免费资源(在应用程序结算视图中)所以onActivityResult()永远不会被调用...一个可能的解决方案可能是正确保存活动状态,创建另一个“光”实际负责进行计费的活动(通过Intent传递sku)然后重新启动主活动。同样,这都假设您遇到了同样的问题并且您的主要活动被破坏了。
答案 1 :(得分:0)
我遇到这个问题的gremlin使用了一个负requestCode
,它打破了结果调度机制。