2
FATAL EXCEPTION: main
java.lang.NullPointerException
    at android.os.Parcel.readException(Parcel.java:1328)
    at android.os.Parcel.readException(Parcel.java:1276)
    at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
    at kr.my.dungeons.BillingService$CheckBillingSupported.run(BillingService.java:209)
    at kr.my.dungeons.BillingService$BillingRequest.runIfConnected(BillingService.java:127)
    at kr.my.dungeons.BillingService.runPendingRequests(BillingService.java:609)
    at kr.my.dungeons.BillingService.onServiceConnected(BillingService.java:654)
    at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1049)
    at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1066)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:126)
    at android.app.ActivityThread.main(ActivityThread.java:4002)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:491)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
    at dalvik.system.NativeStart.main(Native Method)

那是错误语法。

  1. 从 SDK 获取示例源。

  2. 将“公钥”放入 Google 市场的 Security.java 中。

  3. 我的源路径是“src/kr/my/”,aidl 文件路径是“src/com/android/vending/billing/”。

  4. 检查了 AndroidManifest.xml。

  5. 将 apk 上传到谷歌市场。(未发表)

  6. 在谷歌市场添加'sword_001','potion_001'。(已发布)

  7. 在设备上安装了相同的 apk。

(来自https://github.com/robotmedia/AndroidBillingLibrary的示例源中的相同错误)

我错了什么?

4

4 回答 4

4

当用户未接受市场 EULA 时会发生这种情况

所以启动 EULA

 try {
    CALL BILLING CODE HERE .....
  } catch (NullPointerException e) {
    initialiseMarket();
  }

private void initialiseMarket() {
  new AlertDialog.Builder(this).
    setTitle("Android Market").
    setNeutralButton("CLOSE"), new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search"));
        startActivity(intent);
      }
    }).
    setMessage("Android Market not initialised. Please accept EULA and restart.").
    show();
}

取自这里

于 2011-11-14T09:14:14.447 回答
0

我正在这里解决这个问题https://github.com/drewjw81/AndroidBillingLibrary

此版本在无法正确绑定到 Play 时应显示警报。

如果您使用它,请记住它仍然需要一些工作,所以请测试,如果仍然出现错误,请在我的页面上提交错误报告。

于 2012-04-06T11:55:27.687 回答
0

这似乎是此处报告的已知应用内计费错误。

发生这种情况时,我已向 AndroidBillingLibrary 添加catch一个

于 2012-04-22T15:55:33.497 回答
0

在这里阅读我的答案:

android 应用内计费 - restoreTransactionInformation

我假设您尝试恢复事务是因为一堆用户(包括我)在这样做时看到了这个堆栈跟踪。

由于在调用 restoreTransactions 时发送回的 CONFIRM_TRANSACTIONS 请求中添加了一个空字段(“notification_id”字段),因此发生错误。

于 2012-04-24T00:42:24.197 回答