当前位置: 首页 > 知识库问答 >
问题:

获取android应用程序向用户显示的应用内购买项目的价格

慕容成和
2023-03-14

我正在使用以下库将应用内购买集成到我的android应用中:

https://github.com/anjlab/android-inapp-billing-v3#getting-listing-details-of-your-products

我想获得应用程序内项目的价格,以显示给用户。如果使用库中的getPurchaseListingDetails()方法,则会出现列表

BillingProcessor bp;

ArrayList<String> arrayListOfProductIds;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shop);

    arrayListOfProductIds = new ArrayList<>();

    arrayListOfProductIds.add("level_unlock");
    arrayListOfProductIds.add("hint_buy");
    arrayListOfProductIds.add("hint_level");

    boolean isAvailable = BillingProcessor.isIabServiceAvailable(this);
    if(isAvailable) {
        bp = BillingProcessor.newBillingProcessor(this, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz0mDL13z6FtY0Xy09ru0LST4pgy4ph6smeHEsaFbX8fZYVR6SM+eHSIA3j+DnUhiRK8QTun/VJdRnbovvX25rrMju3unAqJzur5whB/4OSXoh6YLOp5+UBiAPuQEzOFsmVhJlwZVH8ScjjwveqXmkByaTde4Ca/FrSoQpbFcuGY0BJPfSSxaQzjs9pwbhNpUqAXF3pbay4/B4o0tw9+rK/8qcGW2ZbG2V/VPQzMZKKBKfyCogY2YV37q80s8CP3tqBzbbnLOF9pmji3A/iuRheclfVuFjj1p7keXMUch2kPPrRJVtLcDbR8gBG0Gju/27zCIaFzFG2RWeu45Qkw5uQIDAQAB", this);
        bp.initialize();
    }

    LinearLayout backButtonShop = (LinearLayout) findViewById(R.id.back_button_shop);
    backButtonShop.setOnClickListener(this);

    Button priceButton01 = (Button) findViewById(R.id.price_button_01);
    priceButton01.setOnClickListener(this);

    Button priceButton02 = (Button) findViewById(R.id.price_button_02);
    priceButton02.setOnClickListener(this);

    Button priceButton03 = (Button) findViewById(R.id.price_button_03);
    priceButton03.setOnClickListener(this);

    List<SkuDetails> purchaseListingDetails = bp.getPurchaseListingDetails(arrayListOfProductIds);
    priceButton01.setText(purchaseListingDetails.get(0).currency + purchaseListingDetails.get(0).priceValue);
    priceButton02.setText(purchaseListingDetails.get(1).currency + purchaseListingDetails.get(1).priceValue);
    priceButton03.setText(purchaseListingDetails.get(2).currency + purchaseListingDetails.get(2).priceValue);

    }

}

我在priceButton01上得到一个空指针异常。setText(purchaseListingDetails.get(0)。货币购买清单详细信息。得到(0)。价格价值) 此行,因为purchaseListingDetails为空。

我如何让它返回List


共有3个答案

桓瀚
2023-03-14

您需要执行以下代码块:

List<SkuDetails> purchaseListingDetails = bp.getPurchaseListingDetails(arrayListOfProductIds);
    priceButton01.setText(purchaseListingDetails.get(0).currency + purchaseListingDetails.get(0).priceValue);
    priceButton02.setText(purchaseListingDetails.get(1).currency + purchaseListingDetails.get(1).priceValue);
    priceButton03.setText(purchaseListingDetails.get(2).currency + purchaseListingDetails.get(2).priceValue);

onBillingInitialized()方法中,而不是在onCreate()中。

顾英发
2023-03-14

这个答案已经晚了,但鉴于它没有被接受的答案,我将给出一个可能的解决方案:

>

@Override
public void onBillingInitialized() {
<your code here>
}
邓正谊
2023-03-14

这是因为您输入的产品ID无效。产品ID应该看起来像这样"com.anjlab.test.iab.s2. p5"

 类似资料:
  • 我已经用这个phonegap插件实现了应用内计费V3。当我购买物品时,google play会返回以下信息: 这很可能是某个地方的设置问题,但我找不到问题所在。 这是我到目前为止所做的: 在google play上创建并以价格活跃的项目 查询的物品ID和google play上的一样 在alpha通道上传了我的apk(也尝试过beta通道),它处于“在Alpha中草稿”状态 等了几个小时(48小时

  • 我在google play store中有一个应用程序,在添加计费3V以处理订阅时遇到了一些问题。任何新的订阅者在付款和付款完成并出现在谷歌控制台后都无法访问我的应用程序。 我希望能在我的应用程序中帮助我处理应用程序内购买,代码如下: public static void isUserHasSubscription(Context Context,onCheck onCheck){BillingC

  • 我正在学习应用内计费,但我有一个问题,谷歌的应用内计费的例子,地下城的一个。 我已经设置了应用程序,添加了我的公钥,并将makeRequestBundle()中的API_VERSION更改为1。 我甚至尝试了一个不同的设备,以确保这不是因为开发者不能购买他们自己的产品,我得到了相同的信息在两个设备上。 我错过了什么?

  • 准备工作 付费应用协议 如果你还没有,你需要在 iTunes Connect 签署付费应用协议, 并设置您的银行和税务信息。 iTunes Connect 开发人员帮助: 协议、税务和银行概述 创建您的应用内购买 然后,您需要在iTunes Connect中配置您的应用内购买,并包含名称,定价和说明等详细信息,以突出显示您的应用内购买的功能。 iTunes Connect开发人员帮助:创建应用程序

  • 我收到这个错误,同时测试我的应用程序。 该应用程序被签名并上传到开发者控制台的alpha测试部分。 应用内项目的状态为"Active"。 我在“测试访问”中输入了我的开发者账户以外的账户。 我使用的设备在“测试访问”中具有主帐户,而不是开发人员帐户。 我已经仔细检查了我的SKU的拼写。 完全相同的. apk被上传到开发人员控制台并安装在测试设备上。 我已经仔细检查了许可证密钥。 我已经等了超过12

  • 我在测试我的应用内计费时遇到了麻烦。 (使用Google Play应用内计费版本3 API) 问题: 已退款的应用程序内购买仍然存在于购买列表中,该列表由BillingClient.query购买()提供。 当我在一月份尝试退款时,退款的物品从购物清单上消失了。 我所做的: 作为测试人员购买了一些物品。 (我很确定对话框说是测试购买。) 之后在谷歌游戏控制台退款。 等到他们的付款状态变成退款。 清