【问题标题】:How to resolve this error in in-app billing?如何解决应用内结算中的此错误?
【发布时间】:2011-11-14 07:43:19
【问题描述】:
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 的示例源中的相同错误)

我做错了什么?

【问题讨论】:

  • 我被固定重置我的设备

标签: android in-app-billing


【解决方案1】:

当用户未接受市场 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();
}

Taken from here

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      这似乎是一个已知的应用内结算错误,已报告 here

      发生这种情况时,我已将catch 添加到AndroidBillingLibrary

      【讨论】:

        【解决方案4】:

        在这里阅读我的答案:

        android in-app billing - restoreTransactionInformation

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

        发生错误的原因是在您调用 restoreTransactions 时返回的 CONFIRM_TRANSACTIONS 请求中添加了一个空字段(“notification_id”字段)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-12
          相关资源
          最近更新 更多