我正在我的应用程序中实现应用内结算支持。我刚刚意识到即使应用程序已经停止,标准计费广播接收器仍然从市场服务接收计费消息。因此,而不是在清单文件中声明我的接收器:
<receiver android:name=".receiver.billing.BillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
我决定使用Context.registerReceiver方法,以确保我的应用程序实际上已准备好正确处理结算消息:
_billingReceiver = new BillingReceiver();
final IntentFilter filter = new IntentFilter("com.android.vending.billing.IN_APP_NOTIFY");
filter.addAction("com.android.vending.billing.RESPONSE_CODE");
filter.addAction("com.android.vending.billing.PURCHASE_STATE_CHANGED");
_billingService.registerReceiver(_billingReceiver, filter);
现在的问题是不再调用BillingReceiver.onReceive。是否存在某种阻止将计费消息发送到动态注册接收器的问题。我浏览了Google / Android的文档但没有找到任何内容。
答案 0 :(得分:2)
为什么您不希望在应用程序停止后收到帐单邮件?这意味着您可能会错过来自市场的有关购买和退款的重要消息。
你会注意到在地下城示例中他们有一个数据库,他们将所有购买信息记录到。然后,他们的UI使用数据库让用户了解他们的购买状态。这样,如果用户在处理购买时转到其他应用程序,他们可以回来看看购买是否已成功完成。