Intereting Posts
Android 2.3 эмулятор пустой экран после сборки Запрос базы данных Google Play Музыки на Android SDK Местоположение не найдено в андроид-студии Как мне взаимодействовать с Google Docs с Android? Масштабируемый мобильный контент с использованием метатекста viewport Разница между базовым контекстом, контекстом приложения и контекстом активности Ошибка: слишком длинный путь к файлу в окнах, не более 240 символов Как создать пользовательский медиаплеер для воспроизведения пользовательского кодека в Android? Получение имени пакета приложения foreground в Marshmallow задерживается на 3 секунды Как получить выбранный индекс RadioGroup в Android Зачем использовать CardView вместо RelativeLayout или LinearLayout? Тестирование того, что admob работает перед публикацией Отключить / закрыть экран блокировки Android Программно Изображение, взятое из галереи, отображается в различной ориентации при использовании phonegap в android Android: схема «http» не зарегистрирована в ICS 4.0.4 с прокси-сервером

В приложении биллинг IAB setup успешно, но quaryInventory сообщает, что помощник IAB не настроен

Я пытаюсь реализовать в биллинге приложений. Я использовал trivialdrivesample, как есть.

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // load game data loadData(); String base64EncodedPublicKey = "my key"; // Create the helper, passing it our context and the public key to verify signatures with Log.d(TAG, "Creating IAB helper."); mHelper = new IabHelper(this, base64EncodedPublicKey); // enable debug logging (for a production application, you should set this to false). mHelper.enableDebugLogging(true); // Start setup. This is asynchronous and the specified listener // will be called once setup completes. Log.d(TAG, "Starting setup."); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { Log.d(TAG, "Setup finished."); if (!result.isSuccess()) { // Oh noes, there was a problem. complain("Problem setting up in-app billing: " + result); return; } // Hooray, IAB is fully set up. Now, let's get an inventory of stuff we own. Log.d(TAG, "Setup successful. Querying inventory."); // mHelper.queryInventoryAsync(mGotInventoryListener); } }); } 

 Button purchaseB = (Button)findViewById(R.id.purchase_button); if(purchaseB != null) purchaseB.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { onUpgradeAppButtonClicked(null); } }); 

Он работает отлично, и я могу приобрести его на своем тестовом счете.

Но проблема в том, что я должен прокомментировать строку кода

// mHelper.queryInventoryAsync (mGotInventoryListener); Я не могу запросить инвентарь. На dubugging я обнаружил, что переменная

 // Is setup done? boolean mSetupDone = false; 

В классе IabHelper неверно, и оно вызывает исключение. Журнал сразу после того, как сказал setup успешно, говорит, что помощник IAB не настроен.


 08-02 16:02:42.453: D/PackList(10346): Creating IAB helper. 08-02 16:02:42.453: D/PackList(10346): Starting setup. 08-02 16:02:42.468: D/IabHelper(10346): Starting in-app billing setup. 08-02 16:02:42.515: D/PackList(10346): Creating IAB helper. 08-02 16:02:42.539: D/IabHelper(10346): Billing service connected. 08-02 16:02:42.546: D/IabHelper(10346): Checking for in-app billing 3 support. 08-02 16:02:42.562: D/IabHelper(10346): In-app billing version 3 supported for com.xx 08-02 16:02:42.570: D/IabHelper(10346): Subscriptions AVAILABLE. 08-02 16:02:42.570: D/PackList(10346): Setup finished. 08-02 16:02:42.570: D/PackList(10346): Setup successful. Querying inventory. 08-02 16:02:42.578: E/IabHelper(10346): In-app billing error: Illegal state for operation (queryInventory): IAB helper is not set up. 

Solutions Collecting From Web of "В приложении биллинг IAB setup успешно, но quaryInventory сообщает, что помощник IAB не настроен"

Попробуй это.

Настройка:

 mIabHelper = new IabHelper(this, ProjectKonstants.APP_PUBLIC_KEY_GOOGLE_PLAY); mIabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { if (result.isSuccess()) { mIabHelper.queryInventoryAsync(mInitialInventoryListener); } } }); mInitialInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isSuccess()) { mBHasDonated = inventory.hasPurchase(ProjectKonstants.APPLICATION_SKU_FOR_DONATION); } else { mBHasDonated = false; } } }; mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isSuccess()) { if (purchase.getSku().equals(ProjectKonstants.APPLICATION_SKU_FOR_DONATION)) { mBHasDonated = true; return; } } mBHasDonated = false; } }; 

На кнопке «Обновить» нажмите:

 AccountManager accountManager = (AccountManager) getSystemService(ACCOUNT_SERVICE); Account[] accounts = accountManager.getAccounts(); String strIdentifier = "[" + accounts[0].name + "][" + android.os.Build.MODEL + "][" + android.os.Build.VERSION.RELEASE + "]"; try { mIabHelper.launchPurchaseFlow(this, ProjectKonstants.APPLICATION_SKU_FOR_DONATION, 10001, mPurchaseFinishedListener, strIdentifier); } catch (IllegalStateException e) { }