尝试购买产品时它有效(当我重新启动我的应用程序并向 iab 查询已购买的产品时,它被视为已购买)。
问题是,在用户点击市场 gui onActivityResult()
购买后,不会被调用。这发生在我自己使用测试帐户的产品上,以及静态响应 android.test.purchased 上。
而是出现以下错误消息:
ERROR/Finsky(1374): [1] IntentUtils.createIntentForReceiver: Could not find receiver for com.ludocrazy.artisan
问题:我必须做什么才能正确转发 Intent ?我似乎遗漏了文档中的某些内容 - 但我认为已经多次检查了所有内容。
购买我使用以下:
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 找不到我的 Activity ,因此 onActivityResult() 没有被调用.
附录:如果我添加一个扩展 BroadcastReceiver 的类,将适当的 intent-filters 添加到 list 中,然后错误消失并且我在 BroadcastReceiver.onReceive() 上收到 ACTION_NOTY。 但这只包含额外的字符串 NOTIFICATION_ID,为了让 onActivityResult() 处理购买(例如额外的:RESPONSE_CODE、INAPP_PURCHASE_DATA、INAPP_DATA_SIGNATURE),应该没有其他内容。 所以这不是解决方法。
我查看了 IABv3 中的 TrivialDriveSample,阅读了 IabHelper 和其他实用程序类,阅读了谷歌文档,遵循了所有测试步骤。我不知道还有什么尝试/检查:-/
最佳答案
在我的例子中,问题与这篇文章有关:
Android Activity destroyed when it shouldn't be
基本上,主要 Activity 被完全破坏以释放资源(在应用内计费 View 期间),因此永远不会调用 onActivityResult() ......一种可能的解决方案是正确保存 Activity 状态,创建另一个“灯”实际上负责计费的 Activity (通过 Intent 传递 sku),然后重新启动主要 Activity 。同样,这一切都假设您遇到了同样的问题并且您的主要 Activity 被破坏了。
关于android billing v3 - onActivityResult 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102937/