diff --git a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
index b585ece..5786dfc 100644
--- a/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceController.java
@@ -17,6 +17,8 @@
 package com.android.settings.network.telephony;
 
 import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
@@ -33,9 +35,10 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
+import com.android.settingslib.utils.ThreadUtils;
 
 /**
- * Preference controller for "Enhanced 4G LTE"
+ * Preference controller for "Voice over NR".
  */
 public class NrAdvancedCallingPreferenceController extends TelephonyTogglePreferenceController
         implements LifecycleObserver, OnStart, OnStop {
@@ -50,8 +53,11 @@
     private boolean mIsVonrVisibleFromCarrierConfig = false;
     private boolean mIsNrEnableFromCarrierConfig = false;
     private boolean mHas5gCapability = false;
+    private boolean mIsVoNrEnabled = false;
     private Integer mCallState;
 
+    private Handler mHandler = new Handler(Looper.getMainLooper());
+
     public NrAdvancedCallingPreferenceController(Context context, String key) {
         super(context, key);
         mTelephonyManager = context.getSystemService(TelephonyManager.class);
@@ -94,6 +100,8 @@
                 CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY);
         mIsNrEnableFromCarrierConfig = !ArrayUtils.isEmpty(nrAvailabilities);
 
+        updateVoNrState();
+
         Log.d(TAG, "mHas5gCapability: " + mHas5gCapability
                 + ",mIsNrEnabledFromCarrierConfig: " + mIsNrEnableFromCarrierConfig
                 + ",mIsVonrEnabledFromCarrierConfig: " + mIsVonrEnabledFromCarrierConfig
@@ -162,7 +170,7 @@
 
     @Override
     public boolean isChecked() {
-        return mTelephonyManager.isVoNrEnabled();
+        return mIsVoNrEnabled;
     }
 
     @VisibleForTesting
@@ -174,6 +182,19 @@
         return isCallStateIdle();
     }
 
+    private void updateVoNrState() {
+        ThreadUtils.postOnBackgroundThread(() -> {
+            boolean result = mTelephonyManager.isVoNrEnabled();
+            if (result != mIsVoNrEnabled) {
+                Log.i(TAG, "VoNr state : " + result);
+                mIsVoNrEnabled = result;
+                mHandler.post(() -> {
+                    updateState(mPreference);
+                });
+            }
+        });
+    }
+
     private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
             TelephonyCallback.CallStateListener {
 
diff --git a/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java
index 9d4082e..053fb4d 100644
--- a/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/NrAdvancedCallingPreferenceControllerTest.java
@@ -186,6 +186,7 @@
         doReturn(true).when(mTelephonyManager).isVoNrEnabled();
         mPreference.setChecked(false);
 
+        mController.init(SUB_ID);
         mController.updateState(mPreference);
 
         assertThat(mPreference.isChecked()).isTrue();
