diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index 959f13f..2b147e7 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -111,10 +111,8 @@
     InCallPresenter.getInstance().onServiceBind();
     InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
     TelecomAdapter.getInstance().setInCallService(this);
-    if (ReturnToCallController.isEnabled(this)) {
-      returnToCallController =
-          new ReturnToCallController(this, ContactInfoCache.getInstance(context));
-    }
+    returnToCallController =
+        new ReturnToCallController(this, ContactInfoCache.getInstance(context));
     feedbackListener = FeedbackComponent.get(context).getCallFeedbackListener();
     CallList.getInstance().addListener(feedbackListener);
 
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index 6227c77..9dfb73b 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -108,6 +108,11 @@
 
   @Override
   public void onUiShowing(boolean showing) {
+    if (!isEnabled(context)) {
+      hide();
+      return;
+    }
+
     LogUtil.i("ReturnToCallController.onUiShowing", "showing: " + showing);
     if (showing) {
       LogUtil.i("ReturnToCallController.onUiShowing", "going to hide");
@@ -155,8 +160,7 @@
     canShowBubblesForTesting = canShowBubbles;
   }
 
-  @VisibleForTesting
-  public Bubble startBubble() {
+  private Bubble startBubble() {
     if (!canShowBubbles(context)) {
       LogUtil.i("ReturnToCallController.startBubble", "can't show bubble, no permission");
       return null;
@@ -178,6 +182,11 @@
 
   @Override
   public void onCallListChange(CallList callList) {
+    if (!isEnabled(context)) {
+      hide();
+      return;
+    }
+
     if ((bubble == null || !bubble.isVisible())
         && getCall() != null
         && !InCallPresenter.getInstance().isShowingInCallUi()) {
@@ -188,6 +197,11 @@
 
   @Override
   public void onDisconnect(DialerCall call) {
+    if (!isEnabled(context)) {
+      hide();
+      return;
+    }
+
     LogUtil.enterBlock("ReturnToCallController.onDisconnect");
     if (bubble != null && bubble.isVisible() && (getCall() == null)) {
       // Show "Call ended" and hide bubble when there is no outgoing, active or background call
@@ -214,6 +228,11 @@
 
   @Override
   public void onAudioStateChanged(CallAudioState audioState) {
+    if (!isEnabled(context)) {
+      hide();
+      return;
+    }
+
     this.audioState = audioState;
     if (bubble != null) {
       bubble.updateActions(generateActions());
