android billing v3 - onActivityResult 未被调用

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

尝试购买产品时它有效(当我重新启动我的应用程序并向 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/

相关文章:

android - Android 3.1+ 中的 BroadcastReceiver 问题

iphone - 如何在应用内购买中恢复购买?

ios - In App Purchase 内容 iOS 的应用程序 uploader 错误

python - 在 Google App Engine 上用 Python 验证 android 应用内购买消息的签名

android - Facebook 无法完成()

java - RelativeLayout 中的 ImageView 与父级不匹配

Android:当发生其他一些 ContentProvider 操作/sqlite 写入时,AsyncTask 中的 ContentProvider 请求会延迟

android - 具有不兼容的支持库与编译SDK版本的影响

c# - 在 Xamarin android (xamarin.android.dll) 中使用 System.Web

android - 如何在按下后停止 android Mx Player