diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 6c1c130..fc2f34e 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -88,8 +88,6 @@
 public class InCallPresenter implements CallList.Listener, AudioModeProvider.AudioModeListener {
   private static final String PIXEL2017_SYSTEM_FEATURE =
       "com.google.android.feature.PIXEL_2017_EXPERIENCE";
-  private static final String EXTRA_FIRST_TIME_SHOWN =
-      "com.android.incallui.intent.extra.FIRST_TIME_SHOWN";
 
   private static final long BLOCK_QUERY_TIMEOUT_MS = 1000;
 
@@ -215,14 +213,7 @@
           }
         }
       };
-  /**
-   * Is true when the activity has been previously started. Some code needs to know not just if the
-   * activity is currently up, but if it had been previously shown in foreground for this in-call
-   * session (e.g., StatusBarNotifier). This gets reset when the session ends in the tear-down
-   * method.
-   */
-  private boolean mIsActivityPreviouslyStarted = false;
-
+  
   /** Whether or not InCallService is bound to Telecom. */
   private boolean mServiceBound = false;
 
@@ -1052,22 +1043,7 @@
       mProximitySensor.onInCallShowing(showing);
     }
 
-    Intent broadcastIntent = Bindings.get(mContext).getUiReadyBroadcastIntent(mContext);
-    if (broadcastIntent != null) {
-      broadcastIntent.putExtra(EXTRA_FIRST_TIME_SHOWN, !mIsActivityPreviouslyStarted);
-
-      if (showing) {
-        LogUtil.d("InCallPresenter.onUiShowing", "Sending sticky broadcast: ", broadcastIntent);
-        mContext.sendStickyBroadcast(broadcastIntent);
-      } else {
-        LogUtil.d("InCallPresenter.onUiShowing", "Removing sticky broadcast: ", broadcastIntent);
-        mContext.removeStickyBroadcast(broadcastIntent);
-      }
-    }
-
-    if (showing) {
-      mIsActivityPreviouslyStarted = true;
-    } else {
+    if (!showing) {
       updateIsChangingConfigurations();
     }
 
@@ -1449,7 +1425,6 @@
 
       cleanupSurfaces();
 
-      mIsActivityPreviouslyStarted = false;
       mIsChangingConfigurations = false;
 
       // blow away stale contact info so that we get fresh data on
diff --git a/java/com/android/incallui/bindings/InCallUiBindings.java b/java/com/android/incallui/bindings/InCallUiBindings.java
index 5c6aef4..c15b68d 100644
--- a/java/com/android/incallui/bindings/InCallUiBindings.java
+++ b/java/com/android/incallui/bindings/InCallUiBindings.java
@@ -26,10 +26,6 @@
   @Nullable
   PhoneNumberService newPhoneNumberService(Context context);
 
-  /** @return An {@link Intent} to be broadcast when the InCallUI is visible. */
-  @Nullable
-  Intent getUiReadyBroadcastIntent(Context context);
-
   /**
    * @return An {@link Intent} to be broadcast when the call state button in the InCallUI is touched
    *     while in a call.
diff --git a/java/com/android/incallui/bindings/InCallUiBindingsStub.java b/java/com/android/incallui/bindings/InCallUiBindingsStub.java
index 3a005b0..3a9e1dc 100644
--- a/java/com/android/incallui/bindings/InCallUiBindingsStub.java
+++ b/java/com/android/incallui/bindings/InCallUiBindingsStub.java
@@ -31,12 +31,6 @@
 
   @Override
   @Nullable
-  public Intent getUiReadyBroadcastIntent(Context context) {
-    return null;
-  }
-
-  @Override
-  @Nullable
   public Intent getCallStateButtonBroadcastIntent(Context context) {
     return null;
   }
