diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
index df47159..52f3d0a 100644
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
+++ b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
@@ -46,6 +46,7 @@
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.precall.PreCall;
+import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
 import com.android.dialer.voicemail.model.VoicemailEntry;
 import java.util.Locale;
@@ -68,6 +69,8 @@
   private TextView voicemailLoadingStatusView;
   private Uri voicemailUri;
   private String numberVoicemailFrom;
+  private String phoneAccountId;
+  private String phoneAccountComponentName;
   private FragmentManager fragmentManager;
   private NewVoicemailViewHolder newVoicemailViewHolder;
   private NewVoicemailMediaPlayer mediaPlayer;
@@ -122,6 +125,8 @@
     voicemailUri = null;
     voicemailLoadingStatusView.setVisibility(GONE);
     numberVoicemailFrom = null;
+    phoneAccountId = null;
+    phoneAccountComponentName = null;
   }
 
   /**
@@ -152,6 +157,8 @@
     Uri uri = Uri.parse(voicemailEntryFromAdapter.voicemailUri());
 
     numberVoicemailFrom = voicemailEntryFromAdapter.number().getNormalizedNumber();
+    phoneAccountId = voicemailEntryFromAdapter.phoneAccountId();
+    phoneAccountComponentName = voicemailEntryFromAdapter.phoneAccountComponentName();
 
     Assert.isNotNull(viewHolder);
     Assert.isNotNull(uri);
@@ -510,7 +517,6 @@
         }
       };
 
-  // TODO(uabdullah): Add phone account handle (a bug)
   private final View.OnClickListener phoneButtonListener =
       new View.OnClickListener() {
         @Override
@@ -525,7 +531,11 @@
               !TextUtils.isEmpty(numberVoicemailFrom),
               "number cannot be empty:" + numberVoicemailFrom);
           PreCall.start(
-              getContext(), new CallIntentBuilder(numberVoicemailFrom, Type.VOICEMAIL_LOG));
+              getContext(),
+              new CallIntentBuilder(numberVoicemailFrom, Type.VOICEMAIL_LOG)
+                  .setPhoneAccountHandle(
+                      TelecomUtil.composePhoneAccountHandle(
+                          phoneAccountComponentName, phoneAccountId)));
         }
       };
 
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
index 11e7888..5f717cf 100644
--- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
+++ b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
@@ -45,7 +45,9 @@
         AnnotatedCallLog.VOICEMAIL_URI,
         AnnotatedCallLog.IS_READ,
         AnnotatedCallLog.NUMBER_ATTRIBUTES,
-        AnnotatedCallLog.TRANSCRIPTION_STATE
+        AnnotatedCallLog.TRANSCRIPTION_STATE,
+        AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME,
+        AnnotatedCallLog.PHONE_ACCOUNT_ID,
       };
 
   // Indexes for VOICEMAIL_COLUMNS
@@ -61,6 +63,8 @@
   private static final int IS_READ = 9;
   private static final int NUMBER_ATTRIBUTES = 10;
   private static final int TRANSCRIPTION_STATE = 11;
+  private static final int PHONE_ACCOUNT_COMPONENT_NAME = 12;
+  private static final int PHONE_ACCOUNT_ID = 13;
 
   // TODO(zachh): Optimize indexes
   VoicemailCursorLoader(Context context) {
@@ -108,6 +112,8 @@
         .setIsRead(cursor.getInt(IS_READ))
         .setNumberAttributes(numberAttributes)
         .setTranscriptionState(cursor.getInt(TRANSCRIPTION_STATE))
+        .setPhoneAccountComponentName(cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME))
+        .setPhoneAccountId(cursor.getString(PHONE_ACCOUNT_ID))
         .build();
   }
 
diff --git a/java/com/android/dialer/voicemail/model/VoicemailEntry.java b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
index 5830fb1..2f554b1 100644
--- a/java/com/android/dialer/voicemail/model/VoicemailEntry.java
+++ b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
@@ -68,6 +68,12 @@
 
   public abstract int transcriptionState();
 
+  @Nullable
+  public abstract String phoneAccountComponentName();
+
+  @Nullable
+  public abstract String phoneAccountId();
+
   /** Builder for {@link VoicemailEntry}. */
   @AutoValue.Builder
   public abstract static class Builder {
@@ -96,6 +102,11 @@
 
     public abstract Builder setTranscriptionState(int transcriptionState);
 
+    public abstract Builder setPhoneAccountComponentName(
+        @Nullable String phoneAccountComponentName);
+
+    public abstract Builder setPhoneAccountId(@Nullable String phoneAccountId);
+
     public abstract VoicemailEntry build();
   }
 }
