Android InApp Покупка Исключение нулевого указателя - PullRequest
7 голосов
/ 20 июля 2011

Я реализовал покупку inApp в своем приложении, но иногда это дает мне NPE, ниже - трассировка стека.Я могу опубликовать код также, если кому-то интересно

if (!mBillingService.checkBillingSupported())
{
    showDialog(DIALOG_CANNOT_CONNECT_ID);
}
mBillingService.requestPurchase("android.test.purchased", null);

Ответы [ 2 ]

12 голосов
/ 20 июля 2011

В вашем методе BillingService.java onStart для недопустимого намерения, подобного этому

 if (null != intent) {
        handleCommand(intent, startId);
 }

Я полагаю, что это вызвано нулевым намерением.Попробуйте!

7 голосов
/ 19 сентября 2012

Я нашел правильный способ исправить это.Ну на самом деле все зависит от того, как вы на это смотрите.Если вы не хотите, чтобы ваш сервис перезапускался после завершения процесса, вам нужно переопределить onStartCommand и вернуть START_NOT_STICKY.Например:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
   handleCommand(intent, startId);
   return START_NOT_STICKY;
}

См. START_NOT_STICKY .Если вы do хотите, чтобы сервис перезапускался каждый раз, когда он был убит, то текущий выбранный вами ответ - тот, который вам нужен, поскольку Android перезапустит ваш сервис после того, как он будет уничтожен с нулевым намерением.Опять же, смотрите ссылку, которую я предоставил.

Oh и onStart устарела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...