title: Why Android service crashes with NullPointerException?
body: <p>Here is the code:</p>
  
  <pre><code>public class BillingService extends Service implements ServiceConnection {
  ...
      @Override
      public void onStart(Intent intent, int startId) {
          handleCommand(intent, startId); // line 361
      }
  
      /**
       * The {@link BillingReceiver} sends messages to this service using intents.
       * Each intent has an action and some extra arguments specific to that action.
       * @param intent the intent containing one of the supported actions
       * @param startId an identifier for the invocation instance of this service
       */
      public void handleCommand(Intent intent, int startId) {
          String action = intent.getAction();
          if (Debug.Yes) {
              Log.i(TAG, "handleCommand() action: " + action);
          }
          if (Consts.ACTION_CONFIRM_NOTIFICATION.equals(action)) {
              String[] notifyIds = intent.getStringArrayExtra(Consts.NOTIFICATION_ID);
              confirmNotifications(startId, notifyIds);
          } else if (Consts.ACTION_GET_PURCHASE_INFORMATION.equals(action)) {
              String notifyId = intent.getStringExtra(Consts.NOTIFICATION_ID);
              getPurchaseInformation(startId, new String[] { notifyId });
          } else if (Consts.ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
              String signedData = intent.getStringExtra(Consts.INAPP_SIGNED_DATA);
              String signature = intent.getStringExtra(Consts.INAPP_SIGNATURE);
              purchaseStateChanged(startId, signedData, signature);
          } else if (Consts.ACTION_RESPONSE_CODE.equals(action)) {
              long requestId = intent.getLongExtra(Consts.INAPP_REQUEST_ID, -1);
              int responseCodeIndex = intent.getIntExtra(Consts.INAPP_RESPONSE_CODE,
                      ResponseCode.RESULT_ERROR.ordinal());
              ResponseCode responseCode = ResponseCode.valueOf(responseCodeIndex);
              checkResponseCode(requestId, responseCode);
          }
      }
  </code></pre>
  
  <p>Here is the LogCat:</p>
  
  <pre><code>java.lang.RuntimeException: Unable to start service tv.kinobaza.billing.BillingService@45129a30 with null: java.lang.NullPointerException
  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3063)
  at android.app.ActivityThread.access$3600(ActivityThread.java:125)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:4627)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
  at dalvik.system.NativeStart.main(Native Method)
  Caused by: java.lang.NullPointerException
  at tv.kinobaza.billing.BillingService.onStart(BillingService.java:361)
  at android.app.Service.onStartCommand(Service.java:420)
  at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3053)
  ... 10 more
  </code></pre>