diff --git a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
index 685f3d723a55bbc0bc1cab295d075958bb2dc98b..b2e344e4e836b5607a53541d74564543701b718e 100644
--- a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java
@@ -55,10 +55,13 @@ import android.widget.TextView;
 
 import java.util.List;
 
+import javax.inject.Inject;
+
 import cx.ring.R;
 import cx.ring.adapters.ContactDetailsTask;
 import cx.ring.adapters.ConversationAdapter;
 import cx.ring.adapters.NumberAdapter;
+import cx.ring.application.RingApplication;
 import cx.ring.model.Account;
 import cx.ring.model.CallContact;
 import cx.ring.model.Conference;
@@ -66,6 +69,7 @@ import cx.ring.model.Conversation;
 import cx.ring.model.Phone;
 import cx.ring.model.Uri;
 import cx.ring.service.LocalService;
+import cx.ring.services.StateService;
 import cx.ring.utils.ActionHelper;
 import cx.ring.utils.ClipboardHelper;
 import cx.ring.utils.ContentUriHandler;
@@ -74,6 +78,10 @@ public class ConversationActivity extends AppCompatActivity implements
         Conversation.ConversationActionCallback,
         ClipboardHelper.ClipboardHelperCallback,
         ContactDetailsTask.DetailsLoadedCallback {
+
+    @Inject
+    StateService mStateService;
+
     private static final String TAG = ConversationActivity.class.getSimpleName();
     private static final String CONVERSATION_DELETE = "CONVERSATION_DELETE";
 
@@ -106,6 +114,7 @@ public class ConversationActivity extends AppCompatActivity implements
 
         String conv_id = i.getData().getLastPathSegment();
         Uri number = new Uri(i.getStringExtra("number"));
+
         Log.d(TAG, "getConversation " + conv_id + " " + number);
         Conversation conv = s.getConversation(conv_id);
         if (conv == null) {
@@ -154,6 +163,7 @@ public class ConversationActivity extends AppCompatActivity implements
         Pair<Conversation, Uri> conv = getConversation(mService, getIntent());
         mConversation = conv.first;
         mPreferredNumber = conv.second;
+
         if (mConversation == null) {
             finish();
             return;
@@ -161,6 +171,13 @@ public class ConversationActivity extends AppCompatActivity implements
 
         ActionBar ab = getSupportActionBar();
         if (ab != null) {
+            if (!mConversation.getContact().getPhones().isEmpty()) {
+                CallContact contact = mStateService.getContact(mConversation.getContact().getPhones().get(0).getNumber());
+                if (contact != null) {
+                    mConversation.setContact(contact);
+                }
+            }
+
             ab.setTitle(mConversation.getContact().getDisplayName());
         }
 
@@ -285,6 +302,9 @@ public class ConversationActivity extends AppCompatActivity implements
 
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 
+        // Dependency injection
+        ((RingApplication) getApplication()).getRingInjectionComponent().inject(this);
+
         mMsgEditTxt = (EditText) findViewById(R.id.msg_input_txt);
         mMsgEditTxt.setOnEditorActionListener(new TextView.OnEditorActionListener() {
             @Override
diff --git a/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java b/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
index 679e0d8082c8216ccdd53c6fda121f8a9195dc71..7bdd4f687573b3dd78893144713b935c08b8f4c7 100755
--- a/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
+++ b/ring-android/app/src/main/java/cx/ring/dependencyinjection/RingInjectionComponent.java
@@ -24,7 +24,9 @@ import javax.inject.Singleton;
 import cx.ring.about.AboutFragment;
 import cx.ring.about.AboutPresenter;
 import cx.ring.application.RingApplication;
+import cx.ring.client.ConversationActivity;
 import cx.ring.fragments.SmartListFragment;
+import cx.ring.navigation.RingNavigationFragment;
 import cx.ring.service.BootReceiver;
 import cx.ring.service.LocalService;
 import cx.ring.services.HistoryServiceImpl;
@@ -33,7 +35,6 @@ import cx.ring.settings.SettingsFragment;
 import cx.ring.settings.SettingsPresenter;
 import cx.ring.share.ShareFragment;
 import cx.ring.share.SharePresenter;
-import cx.ring.navigation.RingNavigationFragment;
 import dagger.Component;
 
 @Singleton
@@ -43,6 +44,8 @@ public interface RingInjectionComponent {
 
     void inject(RingNavigationFragment view);
 
+    void inject(ConversationActivity activity);
+
     void inject(AboutFragment fragment);
 
     void inject(SmartListFragment fragment);
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
index 5406aa97ebbbb824d695b183d1657c589dab910f..00becc8f25ef5046f91533a27a61acea7a9aaa7f 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
@@ -134,7 +134,6 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
     @Inject
     StateService mStateService;
 
-
     final BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -313,12 +312,12 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
 
             if (currentAccount.isSip()) {
                 // sip search
-                displayNewContactRowWithName(query);
+                displayNewContactRowWithName(query, null);
             } else {
 
                 Uri uri = new Uri(query);
                 if (uri.isRingId()) {
-                    displayNewContactRowWithName(query);
+                    displayNewContactRowWithName(query, null);
                 } else {
                     mNewContact.setVisibility(View.GONE);
                 }
@@ -428,6 +427,10 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
             mSearchMenuItem.collapseActionView();
         }
 
+        // We add the contact to the current State so that we can
+        // get it from whatever part of the app as "an already used contact"
+        mStateService.addContact(c);
+
         Intent intent = new Intent()
                 .setClass(getActivity(), ConversationActivity.class)
                 .setAction(Intent.ACTION_VIEW)
@@ -721,12 +724,12 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
 
     @Override
     public void onFound(String name, String address) {
-        displayNewContactRowWithName(name);
+        displayNewContactRowWithName(name, address);
     }
 
-    private void displayNewContactRowWithName(String name) {
+    private void displayNewContactRowWithName(String name, String address) {
         ((TextView) mNewContact.findViewById(R.id.display_name)).setText(name);
-        CallContact contact = CallContact.buildUnknown(name);
+        CallContact contact = CallContact.buildUnknown(name, address);
         mNewContact.setTag(contact);
         mNewContact.setVisibility(View.VISIBLE);
     }
@@ -735,7 +738,7 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
     public void onInvalidName(String name) {
         Uri uri = new Uri(name);
         if (uri.isRingId()) {
-            displayNewContactRowWithName(name);
+            displayNewContactRowWithName(name, null);
         } else {
             mNewContact.setVisibility(View.GONE);
         }
@@ -745,7 +748,7 @@ public class SmartListFragment extends Fragment implements SearchView.OnQueryTex
     public void onError(String name, String address) {
         Uri uri = new Uri(address);
         if (uri.isRingId()) {
-            displayNewContactRowWithName(address);
+            displayNewContactRowWithName(name, address);
         } else {
             mNewContact.setVisibility(View.GONE);
         }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
index 583280624531a29e6e064dca3b2a11fdb217f263..64a7330707e9032d38fe742d147e55645ceed1a5 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/model/CallContact.java
@@ -69,6 +69,17 @@ public class CallContact {
         return new CallContact(UNKNOWN_ID, null, to, 0, phones, "", false);
     }
 
+    public static CallContact buildUnknown(String to, String address) {
+        ArrayList<Phone> phones = new ArrayList<>();
+        if (address != null) {
+            phones.add(new Phone(address, 0));
+        } else {
+            phones.add(new Phone(to, 0));
+        }
+
+        return new CallContact(UNKNOWN_ID, null, to, 0, phones, "", false);
+    }
+
     public static CallContact buildUnknown(String to, int type) {
         ArrayList<Phone> phones = new ArrayList<>();
         phones.add(new Phone(to, type));
diff --git a/ring-android/libringclient/src/main/java/cx/ring/services/StateService.java b/ring-android/libringclient/src/main/java/cx/ring/services/StateService.java
index e19303413cf5989f67c1bd19c04c220037d98b4b..0c0ea3ccb5fc350d9af0f3b3ab9bb30f3a54433f 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/services/StateService.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/services/StateService.java
@@ -19,15 +19,21 @@
  */
 package cx.ring.services;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Observable;
 
 import cx.ring.model.Account;
+import cx.ring.model.CallContact;
+import cx.ring.model.Uri;
 
 public class StateService extends Observable {
 
     private Account mCurrentAccount;
+    private Map<String, CallContact> mContacts;
 
     public StateService() {
+        mContacts = new HashMap<>();
     }
 
     public Account getCurrentAccount() {
@@ -39,4 +45,19 @@ public class StateService extends Observable {
         setChanged();
         notifyObservers();
     }
+
+    public void addContact(CallContact contact) {
+        if (contact == null
+                || contact.getPhones().isEmpty()
+                || contact.getPhones().get(0) == null
+                || contact.getPhones().get(0).getNumber() == null) {
+            return;
+        }
+        mContacts.put(contact.getPhones().get(0).getNumber().toString(), contact);
+    }
+
+    public CallContact getContact(Uri uri) {
+        return mContacts.get(uri.toString());
+    }
+
 }