diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3b11821..abeeee0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1283,6 +1283,9 @@
     <!-- Configuration setting for world mode Format is <true;GID if any to be checked>-->
     <string translatable="false" name="config_world_mode"/>
 
+    <!-- Status hint label for an incoming call over a wifi network which has not been accepted yet.
+         [CHAR LIMIT=25] -->
+    <string name="status_hint_label_incoming_wifi_call">Incoming Wi-Fi call</string>
     <!-- Status hint label for a call being made over a wifi network. [CHAR LIMIT=25] -->
     <string name="status_hint_label_wifi_call">Wi-Fi call</string>
 
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index d4eadea..be04641 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -267,6 +267,7 @@
     @Override
     public void onStateChanged(int state) {
         Log.v(this, "onStateChanged, state: " + Connection.stateToString(state));
+        updateStatusHints();
     }
 
     @Override
@@ -794,19 +795,7 @@
     public void setWifi(boolean isWifi) {
         mIsWifi = isWifi;
         updateConnectionCapabilities();
-
-        if (mIsWifi && mOriginalConnection.isIncoming()) {
-            Context context = getPhone().getContext();
-            ComponentName componentName =
-                    new ComponentName(context, TelephonyConnectionService.class);
-            setStatusHints(new StatusHints(
-                    new ComponentName(context, TelephonyConnectionService.class),
-                    context.getString(R.string.status_hint_label_wifi_call),
-                    R.drawable.ic_signal_wifi_4_bar_24dp,
-                    null /* extras */));
-        } else {
-            setStatusHints(null);
-        }
+        updateStatusHints();
     }
 
     /**
@@ -879,6 +868,24 @@
         }
     }
 
+    private void updateStatusHints() {
+        if (mIsWifi && (mOriginalConnection.getState() == Call.State.INCOMING
+                || mOriginalConnection.getState() == Call.State.ACTIVE)) {
+            int labelId = mOriginalConnection.getState() == Call.State.INCOMING
+                    ? R.string.status_hint_label_incoming_wifi_call
+                    : R.string.status_hint_label_wifi_call;
+
+            Context context = getPhone().getContext();
+            setStatusHints(new StatusHints(
+                    new ComponentName(context, TelephonyConnectionService.class),
+                    context.getString(labelId),
+                    R.drawable.ic_signal_wifi_4_bar_24dp,
+                    null /* extras */));
+        } else {
+            setStatusHints(null);
+        }
+    }
+
     /**
      * Register a listener for {@link TelephonyConnection} specific triggers.
      * @param l The instance of the listener to add
