Я хотел бы получить цены на мои товары в приложениях прямо из Google Play, а не зашифрован. Я нашел следующую функцию:Извлечь цены из Google Play, покупки в приложениях
public String getPricesDev() throws RemoteException, JSONException{
String packageName = mContext.getPackageName();
ArrayList<String> skuList = new ArrayList<String>();
skuList.add("batforerproven.permanent.cat1"); //Is this correct? Name of products?
skuList.add("batforerproven.permanent.cat2");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
Bundle skuDetails = mService.getSkuDetails(3,packageName, ITEM_TYPE_INAPP, querySkus);
int response = skuDetails.getInt("RESPONSE_CODE");
if (response == 0) {
ArrayList<String> 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.contains("batforerproven.permanent.cat2")) return price;
}
}
return "Not found";
}
Проблема в том, что я пытаюсь использовать этот код до привязки службы. (MService равно нулю)
В моей OnCreate() я сделать некоторые UI-установки, то я называю
mIabHelper = new IabHelper(this, base64EncodedPublicKey);
mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result)
{
if (!result.isSuccess()) {
Toast.makeText(BuyExtras.this, "Feil ved kobling mot Google Play.", Toast.LENGTH_LONG).show();
} else {
mIabHelper.queryInventoryAsync(mReceivedInventoryListener);
}
}
});
И тогда я пытаюсь вызвать mIabHelper.getPricesDev()
, но это приводит к нулевому указателю, из-за mService is null ...
Какие функции я должен позвонить, чтобы настроить услугу?
Вы пишете разрешения на манифест? –
Да, все работает, но теперь у меня есть жестко закодированная цена на кнопках покупки ... Нажатие на кнопки, очевидно, устанавливает сервис (из launchPurchaseFlow()?), Но я хочу получить цены до покупок ... – EirikO
Вот как это работает: вы вызываете mIabHelper.startSetup в onCreate и в слушателе, когда вы написали запрос на инвентаризацию, и только после этого в mReceivedInventoryListener у вас есть инвентарь, и вы можете сделать так, как inventory.getSkuDetails(). GetPrice() и update UI –