Dziś odkryłem zgłoszenie awarii aplikacji dla mojego Android app obejmujący następujące ślad stosu:NullPointerException w IabHelper.queryPurchases
java.lang.NullPointerException: Attempt to invoke interface method 'android.os.Bundle com.android.vending.billing.IInAppBillingService.getPurchases(int, java.lang.String, java.lang.String, java.lang.String)' on a null object reference
at com.myapp.utils.IabHelper.queryPurchases(IabHelper.java:878)
at com.myapp.utils.IabHelper.queryInventory(IabHelper.java:572)
at com.myapp.utils.IabHelper.queryInventory(IabHelper.java:545)
at com.myapp.utils.IabHelper$2.run(IabHelper.java:645)
at java.lang.Thread.run(Thread.java:818)
(numery linii zostały zmienione z oryginału -lub co looks like to be the original powodu niestandardowego formatowania)
Zazwyczaj można modyfikować swój kod, aby sprawdzić nieprzypisanych członków klasy. Problemem jest to, że ten kod jest kopiowany & wklejony bezpośrednio z Android SDK, ponieważ IabHelper
to klasa Android SDK provides jako dobry punkt wyjścia do realizacji w aplikacji v3 Billing
Winny linia jest drugim
logDebug("Calling getPurchases with continuation token: " + continueToken);
Bundle ownedItems = mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken);
Wygląda na to, że usługa nie jest połączona w momencie wywołania metody. Ten błąd wystąpił na urządzeniu Nexus 5 (zgodnie z konsolą programisty)
- Czy jest to znany problem z Androidem 5?
- Czy istnieje aktualna wersja Pomocnika IAB?
- Co mogę zrobić, zamiast ręcznie edytować kod do obsługi NPE?
IabHelper jest teraz przestarzały i nie powinien być już używany. Google wydało bibliotekę BillingClient: https://developer.android.com/google/play/billing/billing_library.html – DSchmidt
Pytanie jest w rzeczywistości bardzo stare. –
To pytanie wciąż znajduje się na bardzo wysokim miejscu w Google. Natknąłem się na błąd i odkryłem, że kilka tygodni temu wydali nową bibliotekę. To tylko uwaga dla wszystkich pozostałych deweloperów. – DSchmidt