@Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    Bundle extras = intent.getExtras();
    if (extras != null && extras.getBoolean("GoToChat", false)) {
      LinphoneService.instance().removeMessageNotification();
      String sipUri = extras.getString("ChatContactSipUri");
      displayChat(sipUri);
    } else if (extras != null && extras.getBoolean("Notification", false)) {
      if (LinphoneManager.getLc().getCallsNb() > 0) {
        LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
        if (call.getCurrentParamsCopy().getVideoEnabled()) {
          startVideoActivity(call);
        } else {
          startIncallActivity(call);
        }
      }
    } else {
      if (dialerFragment != null) {
        if (extras != null && extras.containsKey("SipUriOrNumber")) {
          if (getResources().getBoolean(R.bool.automatically_start_intercepted_outgoing_gsm_call)) {
            ((DialerFragment) dialerFragment).newOutgoingCall(extras.getString("SipUriOrNumber"));
          } else {
            ((DialerFragment) dialerFragment)
                .displayTextInAddressBar(extras.getString("SipUriOrNumber"));
          }
        } else {
          ((DialerFragment) dialerFragment).newOutgoingCall(intent);
        }
      }
      if (LinphoneManager.getLc().getCalls().length > 0) {
        LinphoneCall calls[] = LinphoneManager.getLc().getCalls();
        if (calls.length > 0) {
          LinphoneCall call = calls[0];

          if (call != null && call.getState() != LinphoneCall.State.IncomingReceived) {
            if (call.getCurrentParamsCopy().getVideoEnabled()) {
              startVideoActivity(call);
            } else {
              startIncallActivity(call);
            }
          }
        }

        // If a call is ringing, start incomingcallactivity
        Collection<LinphoneCall.State> incoming = new ArrayList<LinphoneCall.State>();
        incoming.add(LinphoneCall.State.IncomingReceived);
        if (LinphoneUtils.getCallsInState(LinphoneManager.getLc(), incoming).size() > 0) {
          if (InCallActivity.isInstanciated()) {
            InCallActivity.instance().startIncomingCallActivity();
          } else {
            startActivity(new Intent(this, IncomingCallActivity.class));
          }
        }
      }
    }
  }
  @Override
  protected void onResume() {
    super.onResume();

    if (!LinphoneService.isReady()) {
      startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class));
    }

    ContactsManager.getInstance().prepareContactsInBackground();

    updateMissedChatCount();

    displayMissedCalls(LinphoneManager.getLc().getMissedCallsCount());

    LinphoneManager.getInstance().changeStatusToOnline();

    if (getIntent().getIntExtra("PreviousActivity", 0) != CALL_ACTIVITY) {
      if (LinphoneManager.getLc().getCalls().length > 0) {
        LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
        LinphoneCall.State callState = call.getState();
        if (callState == State.IncomingReceived) {
          startActivity(new Intent(this, IncomingCallActivity.class));
        } else {

          if (call.getCurrentParamsCopy().getVideoEnabled()) {
            startVideoActivity(call);
          } else {
            startIncallActivity(call);
          }
        }
      }
    }
  }
  public void resetClassicMenuLayoutAndGoBackToCallIfStillRunning() {
    if (dialerFragment != null) {
      ((DialerFragment) dialerFragment).resetLayout(false);
    }

    if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) {
      LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
      if (call.getState() == LinphoneCall.State.IncomingReceived) {
        startActivity(new Intent(LinphoneActivity.this, IncomingCallActivity.class));
      } else if (call.getCurrentParamsCopy().getVideoEnabled()) {
        startVideoActivity(call);
      } else {
        startIncallActivity(call);
      }
    }
  }