问题描述
||
永远不会调用回调方法“ 0”。我制作了自己的演示应用,还尝试使用Google提供的演示(地下城)。
我正在从
onClick
方法调用requestPurchase(String productId,String payload)
。
@Override
public void onClick(View view) {
if(view == requestPurchaseButton) {
mBillingService.requestPurchase(\"android.test.purchased\",\"10\");
}
}
调用回调方法“ 4”。
这里的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说明
当我们从市场收到针对我们提出的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\");
}
从未被调用。
我想念什么吗?在Dungeons(Google提供的演示)中也进行了相同的操作,并且未调用“ 0”。
Test-InAppBilling文档显示我们必须能够达到“购买”状态。但是当我尝试时,我只会看到
android.test.purchased:发送购买请求。
解决方法
我遇到了同样的问题,但自己解决了。我在代码中使用了工作的公钥,但尝试在个人电话上运行该应用程序。由于我使用自己的个人帐户在手机上登录,因此我猜Google正确地认为我不是开发人员。我认为他们会发回错误消息。一旦我将个人密钥插入代码中,它就可以在手机上正常工作。因此密钥也可能与您不匹配。