diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 4145690..a9eb217 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -66,6 +66,7 @@
 import com.android.contacts.common.activity.TransactionSafeActivity;
 import com.android.contacts.common.animation.AnimationListenerAdapter;
 import com.android.contacts.common.dialog.ClearFrequentsDialog;
+import com.android.contacts.common.dialog.SelectSIMDialogFragment;
 import com.android.contacts.common.interactions.ImportExportDialogFragment;
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
 import com.android.contacts.common.util.ViewUtil;
@@ -106,6 +107,7 @@
         OnDragDropListener,
         OnPhoneNumberPickerActionListener,
         PopupMenu.OnMenuItemClickListener,
+        SelectSIMDialogFragment.OnClickOkListener,
         ViewPager.OnPageChangeListener,
         ActionBarController.ActivityUi {
     private static final String TAG = "DialtactsActivity";
@@ -140,6 +142,11 @@
 
     private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
 
+    /**
+     * Constant to indicate there is only one service provider available.
+     */
+    private static final int NO_MULTI_SIM = -1;
+
     private FrameLayout parentLayout;
 
     /**
@@ -194,6 +201,11 @@
     private boolean mIsLandscape;
 
     /**
+     * Information about the currently selected SIM card.
+     */
+    private int mCurrentSimCard = NO_MULTI_SIM;
+
+    /**
      * The position of the currently selected tab in the attached {@link ListsFragment}.
      */
     private int mCurrentTabPosition = 0;
@@ -594,11 +606,19 @@
             case R.id.menu_call_settings:
                 handleMenuSettings();
                 return true;
+            case R.id.menu_select_sim:
+                SelectSIMDialogFragment.show(getFragmentManager(), mCurrentSimCard);
+                return true;
         }
         return false;
     }
 
     @Override
+    public void passSimUpdate(int simId) {
+        mCurrentSimCard = simId;
+    }
+
+    @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == ACTIVITY_REQUEST_CODE_VOICE_SEARCH) {
             if (resultCode == RESULT_OK) {
@@ -764,6 +784,9 @@
     private OptionsPopupMenu buildOptionsMenu(View invoker) {
         final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
         popupMenu.inflate(R.menu.dialtacts_options);
+        final Menu menu = popupMenu.getMenu();
+        final MenuItem selectSim = menu.findItem(R.id.menu_select_sim);
+        selectSim.setVisible(mCurrentSimCard != NO_MULTI_SIM);
         popupMenu.setOnMenuItemClickListener(this);
         return popupMenu;
     }
