24

在实际显示应用内购买的 android 市场前端之前,如何检索应用内计费项目的价格?目前,用户似乎只能在购买对话框中找到应用内商品的价格,我想避免将所有支持货币的价格存储在应用程序中。

4

4 回答 4

17

如果您使用 Trivial Drive 示例并包含 IabHelper 类,则需要将 skus 列表传递给 queryInventoryAsync。

    String[] moreSkus = {"SKU_ITEMONE", "SKU_ITEMTWO"};
    mHelper.queryInventoryAsync(true, Arrays.asList(moreSkus), mGotInventoryListener);
于 2013-03-12T20:34:53.043 回答
17

现在可以使用 Billing API v3。您可以通过getSkuDetails()方法获取信息。例子在这里

ArrayList skuList = new ArrayList();
skuList.add("premiumUpgrade"); 
skuList.add("gas");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList);

Bundle skuDetails = mService.getSkuDetails(3, getPackageName(), “inapp”, querySkus);

int response = skuDetails.getInt("RESPONSE_CODE");
if (response == 0) {
    ArrayList responseList = skuDetails.getStringArrayList("DETAILS_LIST");

    for (String thisResponse : responseList) {
        JSONObject object = new JSONObject(thisResponse);
        String sku = object.getString("productId");
        String price = object.getString("price");
        if (sku.equals(“premiumUpgrade”)) {
            mPremiumUpgradePrice = price;
        } else if (sku.equals(“gas”)) { 
            mGasPrice = price;
        }
    }
}
于 2011-06-05T07:51:28.813 回答
3
String price = inventory.getSkuDetails("sku_of_your_product").getPrice();
于 2014-08-27T15:35:32.830 回答
0

如果您没有遵循 google trivia 示例,则可以使用此代码获取价格。

private void getItemsPrice(){
    List<String> skuList = new ArrayList<>();
    skuList.add("example1");
    skuList.add("example2");
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    mBillingClient.querySkuDetailsAsync(params.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
                    if (responseCode == BillingClient.BillingResponse.OK
                            && skuDetailsList != null) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            String sku = skuDetails.getSku();
                            String price = skuDetails.getPrice();
                            Log.d("item price",price);
                            if ("example1".equals(sku)) {
                                    tvPlan1.setText(price);
                            }
                            else if ("example2".equals(sku)){
                                    tvPlan2.setText(price);

                            }
                        }
                    }

                }
            });
}
于 2019-08-28T07:36:25.347 回答