diff --git a/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java b/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java
index 302e42a..d5d4fdd 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementController.java
@@ -16,7 +16,14 @@
 
 package com.android.settings.accessibility;
 
+import static android.view.accessibility.AccessibilityManager.AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT;
+
+import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
+import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
+
+import android.content.ContentResolver;
 import android.content.Context;
+import android.provider.Settings;
 
 import androidx.annotation.NonNull;
 
@@ -29,9 +36,13 @@
     private static final String TAG =
             ToggleAutoclickIgnoreMinorCursorMovementController.class.getSimpleName();
 
+    private final ContentResolver mContentResolver;
+
     public ToggleAutoclickIgnoreMinorCursorMovementController(
             @NonNull Context context, @NonNull String key) {
         super(context, key);
+
+        mContentResolver = context.getContentResolver();
     }
 
     @Override
@@ -41,13 +52,19 @@
 
     @Override
     public boolean isChecked() {
-        // TODO(b/388845718): retrieve check status from settings.
-        return false;
+        return Settings.Secure.getInt(
+                        mContentResolver,
+                        Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT,
+                        AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT ? ON : OFF)
+                == ON;
     }
 
     @Override
     public boolean setChecked(boolean isChecked) {
-        // TODO(b/388845718): Update settings.
+        Settings.Secure.putInt(
+                mContentResolver,
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT,
+                isChecked ? ON : OFF);
         return true;
     }
 
diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java
index 889b732..552e897 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ToggleAutoclickIgnoreMinorCursorMovementControllerTest.java
@@ -16,12 +16,17 @@
 
 package com.android.settings.accessibility;
 
+import static android.view.accessibility.AccessibilityManager.AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT;
+
+import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
+import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.platform.test.flag.junit.SetFlagsRule;
+import android.provider.Settings;
 
 import androidx.test.core.app.ApplicationProvider;
 
@@ -66,4 +71,27 @@
         assertThat(mController.getAvailabilityStatus())
                 .isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
     }
+
+    @Test
+    public void isChecked_matchesSetting() {
+        assertThat(mController.isChecked()).isEqualTo(readSetting() == ON);
+    }
+
+    @Test
+    public void setChecked_true_updatesSetting() {
+        mController.setChecked(true);
+        assertThat(readSetting()).isEqualTo(ON);
+    }
+
+    @Test
+    public void setChecked_false_updatesSetting() {
+        mController.setChecked(false);
+        assertThat(readSetting()).isEqualTo(OFF);
+    }
+
+    private int readSetting() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT,
+                AUTOCLICK_IGNORE_MINOR_CURSOR_MOVEMENT_DEFAULT ? ON : OFF);
+    }
 }
