diff --git a/res/values/strings.xml b/res/values/strings.xml
index 42fb5b4..a85faf0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -158,4 +158,6 @@
 
     <!-- DO NOT TRANSLATE. Hardcoded number used for restricted incoming phone numbers. -->
     <string name="handle_restricted">RESTRICTED</string>
+
+    <string name="toast_personal_call_msg">Using the personal dialer to make the call</string>
 </resources>
diff --git a/src/com/android/server/telecom/CallIntentProcessor.java b/src/com/android/server/telecom/CallIntentProcessor.java
index 2172a81..3a327c8 100644
--- a/src/com/android/server/telecom/CallIntentProcessor.java
+++ b/src/com/android/server/telecom/CallIntentProcessor.java
@@ -125,7 +125,12 @@
 
         final boolean isPrivilegedDialer = intent.getBooleanExtra(KEY_IS_PRIVILEGED_DIALER, false);
 
-        fixInitiatingUserIfNecessary(context, intent);
+        boolean fixedInitiatingUser = fixInitiatingUserIfNecessary(context, intent);
+        // Show the toast to warn user that it is a personal call though initiated in work profile.
+        if (fixedInitiatingUser) {
+            Toast.makeText(context, R.string.toast_personal_call_msg, Toast.LENGTH_LONG).show();
+        }
+
         UserHandle initiatingUser = intent.getParcelableExtra(KEY_INITIATING_USER);
 
         // Send to CallsManager to ensure the InCallUI gets kicked off before the broadcast returns
@@ -153,8 +158,10 @@
     /**
      * If the call is initiated from managed profile but there is no work dialer installed, treat
      * the call is initiated from its parent user.
+     *
+     * @return whether the initiating user is fixed.
      */
-    static void fixInitiatingUserIfNecessary(Context context, Intent intent) {
+    static boolean fixInitiatingUserIfNecessary(Context context, Intent intent) {
         final UserHandle initiatingUser = intent.getParcelableExtra(KEY_INITIATING_USER);
         if (UserUtil.isManagedProfile(context, initiatingUser)) {
             boolean noDialerInstalled = DefaultDialerManager.getInstalledDialerApplications(context,
@@ -165,8 +172,10 @@
                         userManager.getProfileParent(
                                 initiatingUser.getIdentifier()).getUserHandle();
                 intent.putExtra(KEY_INITIATING_USER, parentUserHandle);
+                return true;
             }
         }
+        return false;
     }
 
     static void processIncomingCallIntent(CallsManager callsManager, Intent intent) {
