java .lang.IllegalStateException при настройке клиента биллинга - PullRequest
0 голосов
/ 23 января 2020

Я получаю cra sh отчеты со следующей трассировкой стека (она всегда одинакова)

java.lang.IllegalStateException: 

  at android.os.Parcel.createException (Parcel.java:1974)

  at android.os.Parcel.readException (Parcel.java:1934)

  at android.os.Parcel.readException (Parcel.java:1884)

  at android.app.IActivityManager$Stub$Proxy.registerReceiver (IActivityManager.java:3690)

  at android.app.ContextImpl.registerReceiverInternal (ContextImpl.java:1567)

  at android.app.ContextImpl.registerReceiver (ContextImpl.java:1528)

  at android.app.ContextImpl.registerReceiver (ContextImpl.java:1516)

  at android.content.ContextWrapper.registerReceiver (ContextWrapper.java:636)

  at com.android.billingclient.api.BillingBroadcastManager$BillingBroadcastReceiver.a (BillingBroadcastManager.java:10)

  at com.android.billingclient.api.BillingBroadcastManager.registerReceiver (BillingBroadcastManager.java:11)

  at com.android.billingclient.api.BillingClientImpl.a (BillingClientImpl.java:53)

  at snackfall.fva.com.snackfall.FullscreenActivity.setupBillingClient (FullscreenActivity.java:23)

  at snackfall.fva.com.snackfall.FullscreenActivity.access$100 (FullscreenActivity.java)

  at snackfall.fva.com.snackfall.FullscreenActivity.checkPurchases (FullscreenActivity.java)

  at snackfall.fva.com.snackfall.FullscreenActivity$2.a (FullscreenActivity.java:2)

  at com.android.billingclient.api.BillingClientImpl$BillingServiceConnection.onServiceDisconnected (BillingClientImpl.java:28)

  at android.app.LoadedApk$ServiceDispatcher.doDeath (LoadedApk.java:1858)

  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run (LoadedApk.java:1873)

  at android.os.Handler.handleCallback (Handler.java:873)

  at android.os.Handler.dispatchMessage (Handler.java:99)

  at android.os.Looper.loop (Looper.java:214)

  at android.app.ActivityThread.main (ActivityThread.java:7050)

  at java.lang.reflect.Method.invoke (Method.java)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
Caused by: android.os.RemoteException: 

  at com.android.server.am.ActivityManagerService.registerReceiver (ActivityManagerService.java:25349)

  at android.app.IActivityManager$Stub.onTransact$registerReceiver$ (IActivityManager.java:10884)

  at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:126)

  at com.android.server.am.ActivityManagerService.onTransact (ActivityManagerService.java:4136)

  at android.os.Binder.execTransact (Binder.java:739)

Проблема в этих четырех строках:

  at snackfall.fva.com.snackfall.FullscreenActivity.setupBillingClient (FullscreenActivity.java:23)

  at snackfall.fva.com.snackfall.FullscreenActivity.access$100 (FullscreenActivity.java)

  at snackfall.fva.com.snackfall.FullscreenActivity.checkPurchases (FullscreenActivity.java)

  at snackfall.fva.com.snackfall.FullscreenActivity$2.a (FullscreenActivity.java:2)

I не понимаю, что такое доступ $ 100 или $ 2.a. Может быть проблема во время деобфускации. Но это должно происходить, когда setupBillingClient

private void setupBillingClient()
{

    billingClient = BillingClient.newBuilder(this).setListener(this).enablePendingPurchases().build();
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(BillingResult billingResult) {

            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                // The billing client is ready. You can query purchases here.

                List<String> skuList = new ArrayList<>();
                skuList.add(adsSKU);

                skuDetailsParams = SkuDetailsParams.newBuilder()
                        .setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();
            }

            try {
                checkPurchases();
            }
            catch(Exception e)
            {
                Units.showAds=true;
            }

            setupAds();

        }

        @Override
        public void onBillingServiceDisconnected() {
            setupBillingClient();
            //System.out.println("RESTARTING CONNECTION");
            // Try to restart the connection on the next request to
            // Google Play by calling the startConnection() method.
        }
    });

}

вызывает checkPurchases

    public void checkPurchases()
    {
        Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
        List<Purchase> purchases = purchasesResult.getPurchasesList();

        handlePurchases(purchases);
    }

Что может быть причиной взлома sh здесь? Также checkPurchases находится внутри try-catch. Это не должно взломать sh.

...