Android em App Billing NullPointerException on Android 8.0

votos
0

Recebi reclamar de usuários de Android 8.0 que, depois de ter feito o pagamento, meu app falha. Eles são incapazes de receber o item comprado. Meu faturamento no aplicativo está usando o código de TrivialDrive (AIDL). Ele funciona bem em outras versões do Android. Este é o relatório acidente:

java.lang.NullPointerException: 
  at .ConceptActivity$12.a (ConceptActivity.java:9)
  at .inappbilling.util.IabHelper$2$1.run (IabHelper.java:8)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6501)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)

Meu IabHelperfoi chamado onCreate.

String base64EncodedPublicKey = 
                                       <license key here>;

            mHelper = new IabHelper(this, base64EncodedPublicKey);

            mHelper.startSetup(new 
            IabHelper.OnIabSetupFinishedListener() {
                 public void onIabSetupFinished(IabResult result) 
             {
                       if (!result.isSuccess()) {
                         Log.d(TAG, In-app Billing setup failed:  + 
                    result);
                       } else {             
                         Log.d(TAG, In-app Billing is set up OK);
                   }
                     }
            });

Esta é a minha compra Listener terminado:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
            = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result,
                                          Purchase purchase)
        {
            if (result.isFailure()) {
                checkItem();
                return;
            }
            else if (purchase.getSku().equals(ITEM_SKU)) {
                removeAds();
            }

        }
    };

E minha Consulta de Inventário terminado:

public void checkItem() {
        mHelper.queryInventoryAsync(mReceivedInventoryListener);
    }

    IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
            = new IabHelper.QueryInventoryFinishedListener() {
        public void onQueryInventoryFinished(IabResult result,
                                             Inventory inventory) {

            if (mHelper == null) return;
            Purchase purchase = inventory.getPurchase(ITEM_SKU);
            if (purchase != null) {
                removeAds();
            }
        }
    };
Publicado 02/09/2018 em 05:26
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more