3

尝试购买产品时它可以工作(当我重新启动我的应用程序并在 iab 中查询购买的产品时,它被视为已购买)。

问题是,用户在市场中点击购买 gui 后onActivityResult() 不会被调用。使用测试帐户的我自己的产品会发生这种情况,静态响应 android.test.purchased 也会发生这种情况。

而是出现以下错误消息

错误/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.onReceive() 上得到一个 ACTION_NOTY。但这仅包含额外字符串 NOTIFICATION_ID,没有任何其他内容应该与意图一起出现以便 onActivityResult() 处理购买(例如额外内容:RESPONSE_CODE、INAPP_PURCHASE_DATA、INAPP_DATA_SIGNATURE)。所以这不是解决方法。

我查看了 IABv3 中的 TrivialDriveSample,阅读了 IabHelper 和其他实用程序类,阅读了谷歌文档,遵循了所有测试步骤。我不知道还有什么 tro 尝试/检查:-/

4

2 回答 2

1

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

Android Activity 在不应该被销毁时被销毁

基本上,主要活动被完全破坏以释放资源(在应用内计费视图期间),因此永远不会调用 onActivityResult() ......一种可能的解决方案可能是正确保存活动的状态,创建另一个“轻”活动,这将实际上负责记帐(通过 Intent 传递 sku),然后重新启动主要活动。同样,这一切都假设您有同样的问题并且您的主要活动被破坏了。

于 2013-04-23T06:21:47.480 回答
0

我对这个问题的小问题是使用否定的requestCode,这会破坏结果调度机制。

于 2015-01-14T01:15:39.587 回答