Android 应用内计费在G1上不起作用

Android 应用内计费在G1上不起作用,android,in-app-purchase,Android,In App Purchase,我已经在我的Android应用程序中实现了应用内计费。它在我自己的Android 2.2版和Market 2.3.4版设备上运行良好。但它并没有在Android 1.6和市场版本1002211(奇怪的版本)的T-Mobile G1上进行测试,但它有应用内计费许可。将引发异常: ERROR/Bundle(2079): readBundle: bad magic number ERROR/Bundle(2079): readBundle: trace = java.lang.RuntimeExcep

我已经在我的Android应用程序中实现了应用内计费。它在我自己的Android 2.2版和Market 2.3.4版设备上运行良好。但它并没有在Android 1.6和市场版本1002211(奇怪的版本)的T-Mobile G1上进行测试,但它有应用内计费许可。将引发异常:

ERROR/Bundle(2079): readBundle: bad magic number
ERROR/Bundle(2079): readBundle: trace = java.lang.RuntimeException
        at android.os.Bundle.readFromParcelInner(Bundle.java:1473)
        at android.os.Bundle.<init>(Bundle.java:82)
        at android.os.Parcel.readBundle(Parcel.java:1344)
        at android.os.Parcel.readBundle(Parcel.java:1329)
        at android.os.Bundle$1.createFromParcel(Bundle.java:1410)
        at android.os.Bundle$1.createFromParcel(Bundle.java:1413)
        at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:102)
        at MyAppPackages.BillingService$RestoreTransactions.run(BillingService.java:310)
        at MyAppPackages.BillingService$BillingRequest.runIfConnected(BillingService.java:118)
        at MyAppPackages.BillingService$BillingRequest.runRequest(BillingService.java:97)
        at MyAppPackages.BillingService.restoreTransactions(BillingService.java:428)
        at MyAppPackages.BillingActivity.restoreDatabase(BillingActivity.java:193)
        at MyAppPackages.BillingActivity.access$000(BillingActivity.java:45)
        at MyAppPackages.BillingActivity$PurchaseObserver.onBillingSupported(BillingActivity.java:107)
        at MyAppPackages.ResponseHandler.checkBillingSupportedResponse(ResponseHandler.java:83)
        at MyAppPackages.BillingService$CheckBillingSupported.run(BillingService.java:188)
        at MyAppPackages.BillingService$BillingRequest.runIfConnected(BillingService.java:118)
        at MyAppPackages.BillingService.runPendingRequests(BillingService.java:521)
        at MyAppPackages.BillingService.onServiceConnected(BillingService.java:554)
        at android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThread.java:1053)
        at android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(ActivityThread.java:1070)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4203)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
        at dalvik.system.NativeStart.main(Native Method)
ERROR/Bundle(2079):readBundle:错误的幻数
错误/绑定(2079):readBundle:trace=java.lang.RuntimeException
位于android.os.Bundle.ReadFromParceliner(Bundle.java:1473)
位于android.os.Bundle.(Bundle.java:82)
位于android.os.Parcel.readBundle(Parcel.java:1344)
位于android.os.Parcel.readBundle(Parcel.java:1329)
位于android.os.Bundle$1.createFromParcel(Bundle.java:1410)
位于android.os.Bundle$1.createFromParcel(Bundle.java:1413)
位于com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:102)
在MyAppPackages.BillingService$RestoreTransactions.run(BillingService.java:310)
在MyAppPackages.BillingService$BillingRequest.runIfConnected(BillingService.java:118)
在MyAppPackages.BillingService$BillingRequest.runRequest(BillingService.java:97)
在MyAppPackages.BillingService.restoreTransactions(BillingService.java:428)中
在MyAppPackages.BillingActivity.restoreDatabase(BillingActivity.java:193)
在MyAppPackages.BillingActivity.access$000(BillingActivity.java:45)
在MyAppPackages.BillingActivity$PurchaseObserver.onBillingSupported(BillingActivity.java:107)中
在MyAppPackages.ResponseHandler.checkBillingSupportedResponse(ResponseHandler.java:83)
在MyAppPackages.BillingService$CheckBillingSupported.run(BillingService.java:188)
在MyAppPackages.BillingService$BillingRequest.runIfConnected(BillingService.java:118)
在MyAppPackages.BillingService.runPendingRequests(BillingService.java:521)
在MyAppPackages.BillingService.onServiceConnected(BillingService.java:554)
在android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected上(ActivityThread.java:1053)
在android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(ActivityThread.java:1070)
位于android.os.Handler.handleCallback(Handler.java:587)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:4203)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:521)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
在dalvik.system.NativeStart.main(本机方法)

请帮助我了解发生了什么。

我在我的LG P500上遇到了同样的问题,市场已经过时了。。。 问题在于计费服务的CheckBillingSupported子类的run()方法

它将返回“真”,尽管市场不支持计费

响应代码将产生0,因为实际未设置额外字段BILLING_response_response_code,而是默认返回0;顺便说一下,结果_OK也是0

int responseCode = response.getInt(Consts.BILLING_RESPONSE_RESPONSE_CODE);
要解决此问题,请将呼叫替换为:

int responseCode = response.getInt(Consts.BILLING_RESPONSE_RESPONSE_CODE, -123);
这解决了我的问题