Intereting Posts
Фрагменты onCreateView (). От куда это? Услуги по проверке местоположения Android доступны с поддержкой игровых сервисов api Удалить .iml файлы из GIT для хорошего Android: изменение вкладки Цвет текста программно Поставщик плавного местоположения, похоже, не использует приемник GPS Как настроить окно на внешнем дисплее из службы? Меню Android Lollipop Material Design Overflow Меню Цвет значка Как добавить стерео, высокие частоты в звуковом эквалайзере? CursorIndexOutOfBoundsException Index 0 запрошен, с размером 0 Android NTLM, получающий HTTP / 1.1 401 Несанкционированный Как я могу использовать фильтр для emma при создании теста Android с муравьем? Практика выхода (0) в C и System.exit (0) в Java Позиция CSS: исправлено появление размытых изображений в Android-браузерах Android: эффективно ли хранить ссылки на Views в качестве переменных-членов? База данных Android повреждена, но ее можно открыть в SQLite Manager. Извлекаемые?

В приложении биллинг 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) { }