Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android registerReceiver是否存在应用内计费消息问题?_Android - Fatal编程技术网

Android registerReceiver是否存在应用内计费消息问题?

Android registerReceiver是否存在应用内计费消息问题?,android,Android,我正在应用程序中实现应用内计费支持。我刚刚意识到,即使应用程序已停止,标准计费广播接收器仍在从市场服务接收计费消息。因此,不要在清单文件中声明我的接收者: <receiver android:name=".receiver.billing.BillingReceiver"> <intent-filter> <action android:name="com.android.vending.billing.IN_APP_

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

    <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>

现在的问题是不再调用BillingReceiver.onReceive。是否存在阻止向动态注册的接收者发送计费消息的某种问题。我查看了Google/Android的文档,没有发现任何东西。

当应用程序停止时,你为什么不想接收账单消息?这意味着你可能会错过市场上关于购买和退款的重要信息


你会注意到在地下城的例子中,他们有一个数据库,记录所有的购买信息。然后他们的UI使用数据库让用户了解他们的购买状态。这样,如果用户在购买过程中访问了其他应用程序,他们可以返回并看到购买已成功完成。

主要原因是,在接收市场消息时,我的计费服务向服务器发出请求,应用程序在完全初始化之前不准备发出这些请求,这是一个通常在创建主活动时发生的过程。但我明白你的意思:计费信息应该尽快处理以缓解市场服务,否则它将不得不继续广播相同的IN_APP_计费通知。因此,我必须在我的账单服务中移动所需的初始化内容,以便处理账单消息。是的,你真的希望通过链接到账单接收者的服务与服务器通话。否则,您可能会错过在服务器上记录合法购买的记录。我的实现将服务器访问代码放入BillingSecurity类中。它似乎工作正常。
    _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);