回调方法onPurchaseStateChange
从未被调用过。我做了自己的演示应用程序,并尝试使用谷歌提供的演示(地下城)。
我正在打电话requestPurchase(String productId, String payload)
来自onClick
method.
@Override
public void onClick(View view) {
if(view == requestPurchaseButton) {
mBillingService.requestPurchase("android.test.purchased", "10");
}
}
回调方法onRequestPurchaseResponse(Request, ResponseCode)
叫做。
这responseCode
这里给出了值RESULT_OK
。这样请求就已经发送到服务器了。
@Override
public void onRequestPurchaseResponse(RequestPurchase request,
ResponseCode responseCode)
{
if(responseCode == ResponseCode.RESULT_OK) {
Log.d("AJ", "onRequestPurchaseResponse.ResponeCode.RESULT_OK");
textView.append(request.mProductId + "\n");
} else if(responseCode == ResponseCode.RESULT_USER_CANCELED) {
//doesn't go here
} else {
//doesn't go here
}
}
该方法的 javadoc 指出
当我们收到来自 Market 的针对我们发出的 RequestPurchase 请求的响应代码时,将调用此函数。这不用于任何购买状态更改。所有购买状态更改均在 onPurchaseStateChange(PurchaseState, String, int, long) 中接收。这用于报告各种错误,或者用户退出并没有购买该商品。可能的响应代码有: RESULT_OK 表示订单已成功发送到服务器。当订单被收取或取消时, onPurchaseStateChange() 将在稍后调用(购买状态为 PURCHASED 或 CANCELED)。如果市场管理的商品的订单已发送到服务器,也可能会出现此响应代码。 RESULT_USER_CANCELED 表示用户没有购买该商品。 RESULT_SERVICE_UNAVAILABLE 表示我们无法连接到 Android Market 服务器(例如,如果数据连接断开)。 RESULT_BILLING_UNAVAILABLE 表示尚不支持应用内结算。 RESULT_ITEM_UNAVAILABLE 表示此应用程序出售的商品在服务器端目录中不存在(或未发布)。 RESULT_ERROR 用于任何其他错误(例如服务器错误)。
但回调方法
@Override
public void onPurchaseStateChange(PurchaseState purchaseState,
String itemId, int quantity, long purchaseTime,
String developerPayload) {
Log.d("AJ", "onPurchaseStateChanged");
}
从未被调用过。
我错过了什么吗?地下城(Google 提供的演示)和onPurchaseStateChange
不被调用。
The 应用内计费测试 http://developer.android.com/guide/market/billing/billing_testing.html文档显示我们必须能够达到已购买状态。但当我尝试时,我只看到
android.test.purchased:发送购买请求。