registerReceiver问题与应用内结算消息?

时间:2011-06-03 16:02:15

标签: android

我正在我的应用程序中实现应用内结算支持。我刚刚意识到即使应用程序已经停止,标准计费广播接收器仍然从市场服务接收计费消息。因此,而不是在清单文件中声明我的接收器:

    <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的文档但没有找到任何内容。

1 个答案:

答案 0 :(得分:2)

为什么您不希望在应用程序停止后收到帐单邮件?这意味着您可能会错过来自市场的有关购买和退款的重要消息。

你会注意到在地下城示例中他们有一个数据库,他们将所有购买信息记录到。然后,他们的UI使用数据库让用户了解他们的购买状态。这样,如果用户在处理购买时转到其他应用程序,他们可以回来看看购买是否已成功完成。