- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为了在适用于 Android 的应用计费 v3 中进行测试,我实现了一个对话框,其中添加了一个单选项目适配器。我添加了测试 Skus,“android.test.purchased”、“android.test.canceled”、“android.test.refunded”、“android.test.item_unavailable”。
当我使用对话框启动购买流程时,一切都很好,我可以购买该商品,而且该商品已确定购买。但是,当我的应用程序随后尝试刷新 UI 时,我得到了一个 nullpointerexception。我知道刷新有效。
这是我的日志:
12-16 01:06:06.706: I/Running inventory query with(20846): android.test.purchased
12-16 01:06:06.706: I/Running details query with(20846): SkuDetails:{"title":"Sample Title","price":"£0.61","type":"inapp","description":"Sample description for product: android.test.purchased.","productId":"android.test.purchased"}
12-16 01:06:06.706: I/Running details query with(20846): SkuDetails:{"title":"Sample Title","price":"£0.61","type":"inapp","description":"Sample description for product: android.test.purchased.","productId":"android.test.purchased"}
12-16 01:06:06.706: I/Running inventory query with(20846): android.test.canceled
12-16 01:06:06.706: I/Running details query with(20846): null
12-16 01:06:06.706: I/Running details query with(20846): null
12-16 01:06:06.706: D/AndroidRuntime(20846): Shutting down VM
12-16 01:06:06.706: W/dalvikvm(20846): threadid=1: thread exiting with uncaught exception (group=0x40d12930)
12-16 01:06:06.706: E/AndroidRuntime(20846): FATAL EXCEPTION: main
12-16 01:06:06.706: E/AndroidRuntime(20846): java.lang.NullPointerException
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.example.test.MainActivity$1.onQueryInventoryFinished(MainActivity.java:201)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.example.test.util.IabHelper$2$1.run(IabHelper.java:536)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Handler.handleCallback(Handler.java:725)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Handler.dispatchMessage(Handler.java:92)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Looper.loop(Looper.java:137)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-16 01:06:06.706: E/AndroidRuntime(20846): at java.lang.reflect.Method.invokeNative(Native Method)
12-16 01:06:06.706: E/AndroidRuntime(20846): at java.lang.reflect.Method.invoke(Method.java:511)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-16 01:06:06.706: E/AndroidRuntime(20846): at dalvik.system.NativeStart.main(Native Method)
for (String s : allSkus) {
Log.i("Running inventory query with", "" + s);
SkuDetails c = inv.getSkuDetails(s);
Log.i("Running details query with", "" + c);
if (inv.hasPurchase(s)) {
purchaseArray.add(c.getTitle());
} else {
**LINE 201** objects.add(c.getPrice() + " T:" + c.getSku());
}
allSkus 是一个 ArrayList,它包含上面的 4 个 skus。
空指针是 SkuDetails c = inv.getSkuDetails(s);
在 UI 刷新时返回 null。但问题是它似乎适用于第一个 sku (android.test.purchased) 但对第二个 sku (android.test.canceled) 为 null 并且它也只有在购买另一个项目后运行时才为 null (退款或购买)。但是,如果我随后再次打开它,就可以了,并且不会抛出 nullpointerexception。
如果我在添加到 ArrayList 对象之前添加 null 检查,则不会添加任何项目,因为在 inv.getSkuDetails(s) 上购买的项目返回 null 之后或之前的每个项目
最佳答案
这让我感到难过,接受的答案没有包含相关的细节。
你需要做的是在调用 startSetup 后传递一个列表,其中包含你要查询的 SKU(是否已购买)。因此它看起来类似于下面的代码,而不是(不充分的)样板 TrivialDrive 示例中提供的代码。
mHelper.queryInventoryAsync(true, skuList, mGotInventoryListener);
此外,看起来还有一些幻影方法(在评论中仍未清理,这也是不准确的)...此处有关该错误的更多详细信息:
关于android - 在应用计费 v3 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897809/
今天早上,我收到以下消息“此帐户位于已弃用的计费系统上。请联系支持人员将其移至新系统。”当我在门户中打开订阅 Blade 时。当我尝试提交计费支持票证时,它只是在尝试提出支持计划时挂起,无论如何,这对
我正在尝试按照此 firebase 教程设置系统以在超出配额时禁用计费。 https://www.youtube.com/watch?v=Dk3VvRSrQIY 视频描述中链接的文档建议可以延迟终止开
Azure 中是否有办法根据资源组成员身份获取 2 个(或更多)在同一订阅下创建的资源消耗的单独发票?示例: 资源组 A - 包含 Sql 数据库 - 1 张发票 资源组 B - 具有应用服务 - 第
美好的一天。 我是 Azure 云新手,正在尝试了解不同的服务。 我们有 FileShare 存储帐户,该帐户安装在创建的 VM 上。存储帐户是否会默认启用 Azure Defender?我问这个问题
美好的一天。 我是 Azure 云新手,正在尝试了解不同的服务。 我们有 FileShare 存储帐户,该帐户安装在创建的 VM 上。存储帐户是否会默认启用 Azure Defender?我问这个问题
我正在尝试购买测试项目 ID“android.test.purchased”,以检查我的账单集成。但是出现如下错误: com.android.vending.api.ApiException: Err
我有一个带有应用内结算功能的安卓应用。我想要订阅。我看到一个谷歌示例。我在我的申请中介绍了计费。我购买一件商品。但我有问题。我单击按钮“购买”开始 Intent ...。关闭此 Intent 后(文本
默认情况下有多少个前端池附带 ASEv2? 前端池是否包含在 ASEv2 固定月费中?是否根据 worker 的数量和级别(I1、I2、I、3)收费?即 1x I1 前端 + 1x I1 工作人员 =
我们最近开始了新的 Azure DevOps 环境之旅。我确实需要 Microsoft 托管代理和即用即付并行作业的详细计费文档。Microsoft 托管代理相对于自托管代理有哪些优势以及这一切的成本
我们最近开始了新的 Azure DevOps 环境之旅。我确实需要 Microsoft 托管代理和即用即付并行作业的详细计费文档。Microsoft 托管代理相对于自托管代理有哪些优势以及这一切的成本
我正在制作一个应用程序,它可以存储用户使用我的应用程序学习了多少分钟。我的 Firestore 数据库以“用户”集合开头,每个用户都有自己的文档,该文档由 Auth 中生成的用户 ID 命名。 我的问
我需要与 Windows Azure 服务总线主题计费相关的详细信息。例如。 我需要为我的应用程序发布的内容或我的应用程序接收的内容付费吗? 例如。假设我有 1 个出版商和 5 个主题。每个主题每秒有
我正在使用 Azure 发票 API,它要求提供以下参数 https://management.azure.com/providers/Microsoft.Billing/billingAccount
在 Azure 的付款估算器上,我可以选择希望应用服务处于事件状态/付费的小时数。由于在办公时间之外或周末不需要我的应用程序,因此我可以减少工作时间,因此与支付 24/7 相比,成本估算会大大减少。因
我正在尝试对 SQL Azure 的计费术语进行一些澄清...我们目前有一个内部 SQL Server (2008),我们可以从中运行多个数据库。 SQL Azure 计费文档根据数据库大小列出了价格
知道 Azure 计费 API 是否依赖于部署模型(RM 或经典?)。这 Azure documentation没有提及任何具体内容。 最佳答案 两者都不是。部署模型与您配置的 Azure资源相关。计
我想在 Azure DevOps 组织超过一定阈值后删除其计费,以免他们被多收费。所以我有两个问题。首先,是否可以通过 Azure 门户上的成本管理/计费来确定特定 Azure DevOps 组织的预
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: This version of the application is not configured for
我正在尝试在我的一个应用程序中将诺基亚集成到应用程序购买中。我能够在诺基亚 X 模拟器上运行它。但是当我尝试在诺基亚 X 设备上执行相同的代码时,我遇到了以下问题。 我尝试为诺基亚商店应用清除数据,但
我正在开发一个 android 项目,我正在尝试实现 In App Billing V3。 我已将我的应用上传到 Google Play,并向该应用添加 IAP。我可以成功检索我的应用程序具有的 IA
我是一名优秀的程序员,十分优秀!