diff --git a/res/layout/voicemail_playback_layout.xml b/res/layout/voicemail_playback_layout.xml
index 4d5f74f..984a52b 100644
--- a/res/layout/voicemail_playback_layout.xml
+++ b/res/layout/voicemail_playback_layout.xml
@@ -102,16 +102,18 @@
             android:tint="@color/voicemail_icon_tint"
             android:contentDescription="@string/call_log_trash_voicemail" />
 
-        <Space
+        <Space android:id="@+id/space_before_archive_voicemail"
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"/>
+            android:layout_weight="1"
+            android:visibility="gone" />
 
         <ImageButton android:id="@+id/archive_voicemail"
             style="@style/VoicemailPlaybackLayoutButtonStyle"
             android:src="@drawable/ic_archive_white_24dp"
             android:tint="@color/voicemail_icon_tint"
-            android:contentDescription="@string/call_log_archive_voicemail" />
+            android:contentDescription="@string/call_log_archive_voicemail"
+            android:visibility="gone" />
 
         <Space
             android:layout_width="0dp"
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index 8e31026..0f068f5 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -21,7 +21,8 @@
         android:title="@string/action_menu_call_history_description" />
     <item
         android:id="@+id/menu_archive"
-        android:title="@string/voicemail_archive_activity_title" />
+        android:title="@string/voicemail_archive_activity_title"
+        android:visible="false" />
     <item
         android:id="@+id/menu_import_export"
         android:title="@string/menu_import_export" />
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index e775b0a..58a0474 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -908,6 +908,9 @@
     protected OptionsPopupMenu buildOptionsMenu(View invoker) {
         final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
         popupMenu.inflate(R.menu.dialtacts_options);
+        if (ObjectFactory.isVoicemailArchiveEnabled(this)) {
+            popupMenu.getMenu().findItem(R.id.menu_archive).setVisible(true);
+        }
         popupMenu.setOnMenuItemClickListener(this);
         return popupMenu;
     }
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
index 436fc79..0cbe7f2 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackLayout.java
@@ -32,6 +32,7 @@
 import android.widget.LinearLayout;
 import android.widget.SeekBar;
 import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.Space;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -44,6 +45,7 @@
 import com.android.dialer.database.VoicemailArchiveContract.VoicemailArchive;
 import com.android.dialer.util.AsyncTaskExecutor;
 import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialerbind.ObjectFactory;
 import com.google.common.annotations.VisibleForTesting;
 
 import java.util.ArrayList;
@@ -273,6 +275,7 @@
     private ImageButton mPlaybackSpeakerphone;
     private ImageButton mDeleteButton;
     private ImageButton mArchiveButton;
+    private Space mArchiveSpace;
     private TextView mStateText;
     private TextView mPositionText;
     private TextView mTotalDurationText;
@@ -297,8 +300,10 @@
     public void setPresenter(VoicemailPlaybackPresenter presenter, Uri voicemailUri) {
         mPresenter = presenter;
         mVoicemailUri = voicemailUri;
-        updateArchiveUI(mVoicemailUri);
-        updateArchiveButton(mVoicemailUri);
+        if (ObjectFactory.isVoicemailArchiveEnabled(mContext)) {
+            updateArchiveUI(mVoicemailUri);
+            updateArchiveButton(mVoicemailUri);
+        }
     }
 
     @Override
@@ -310,6 +315,7 @@
         mPlaybackSpeakerphone = (ImageButton) findViewById(R.id.playback_speakerphone);
         mDeleteButton = (ImageButton) findViewById(R.id.delete_voicemail);
         mArchiveButton =(ImageButton) findViewById(R.id.archive_voicemail);
+        mArchiveSpace = (Space) findViewById(R.id.space_before_archive_voicemail);
         mStateText = (TextView) findViewById(R.id.playback_state_text);
         mPositionText = (TextView) findViewById(R.id.playback_position_text);
         mTotalDurationText = (TextView) findViewById(R.id.total_duration_text);
@@ -511,6 +517,7 @@
     }
 
     public void hideArchiveButton() {
+        mArchiveSpace.setVisibility(View.GONE);
         mArchiveButton.setVisibility(View.GONE);
         mArchiveButton.setClickable(false);
         mArchiveButton.setEnabled(false);
@@ -582,6 +589,7 @@
                 if (archived) {
                     hideArchiveButton();
                 } else {
+                    mArchiveSpace.setVisibility(View.VISIBLE);
                     mArchiveButton.setVisibility(View.VISIBLE);
                     mArchiveButton.setClickable(true);
                     mArchiveButton.setEnabled(true);
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 4568c1b..935c9f7 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -44,6 +44,10 @@
         return "com.android.dialer.database.filterednumberprovider";
     }
 
+    public static boolean isVoicemailArchiveEnabled(Context context) {
+        return false;
+    }
+
     @Nullable
     public static ExtendedBlockingButtonRenderer newExtendedBlockingButtonRenderer(
             Context context, ExtendedBlockingButtonRenderer.Listener listener) {
