gpt4 book ai didi

android - 在基于地下城的计费服务中,bindService 返回 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 22:08:06 25 4
gpt4 key购买 nike

我正在实现基于 Dungeons 示例的计费服务(Google 建议您采用这种方式)。以下事实使它稍微复杂一些:

  1. 主要服务类位于库项目中(因为我想多次重新设计代码)。作为this stackoverflow answer建议图书馆项目中的服务可能会导致问题,我将服务抽象化并在子项目中继承;这也让我可以为每个 reskin 使用不同的公钥(这是可取的)。
  2. 有很多 UI 元素需要尽快了解是否支持计费。

因此,我正在调用一个函数来检查第一个 Activity 运行的 onCreate() 方法是否支持计费(实际上是任何 Activity ,但随后将写入首选项,因此这应该只发生一次)。

在 Dungeons 示例中,检查是否支持计费的代码尝试绑定(bind)到计费服务(来自 Service 类):

boolean bindResult = bindService(
new Intent(Consts.MARKET_BILLING_SERVICE_ACTION),
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);

此调用抛出一个 NullPointerException。我已经非常仔细地检查过,这些东西都不是空的;它发生在函数,显然是在 ContextWrapper.java 的第 370 行。

因为this other stackoverflow answer我想知道从 onCreate() 检查账单是否为时过早,但 Dungeons 示例项目再次从这里调用它,所以我不认为是这样。

我使用的是更高版本的 Android (3.1),因此这可能会产生影响,但我很想知道造成这种情况的可能原因。另一件事:Eclipse 告诉我 customIntent 是空的,但它指的是什么并不完全清楚,我也找不到太多相关信息。

最佳答案

答案非常非常简单:我在 Activity#onCreate 中错过了这一步:

mBillingService = new BillingService()

//THIS STEP IS THE CRITICAL STEP
mBillingService.setContext(this);
//IF ONLY I HAD KNOWN

mBillingService.checkBillingSupported();

这会调用 attachBaseContext(context);

现在可以了:)

关于android - 在基于地下城的计费服务中,bindService 返回 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com