diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 776eb21..2791c41 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3524,7 +3524,6 @@
         public ArrayMap<String, String> getStringsForPrefix(ContentResolver cr, String prefix,
                 List<String> names) {
             String namespace = prefix.substring(0, prefix.length() - 1);
-            Config.enforceReadPermission(namespace);
             ArrayMap<String, String> keyValues = new ArrayMap<>();
             int currentGeneration = -1;
             boolean needsGenerationTracker = false;
@@ -19648,21 +19647,6 @@
                .getApplicationContext().checkCallingOrSelfPermission(permission);
         }
 
-        /**
-         * Enforces READ_DEVICE_CONFIG permission if namespace is not one of public namespaces.
-         * @hide
-         */
-        public static void enforceReadPermission(String namespace) {
-            if (ActivityThread.currentApplication().getApplicationContext()
-                    .checkCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG)
-                    != PackageManager.PERMISSION_GRANTED) {
-                if (!DeviceConfig.getPublicNamespaces().contains(namespace)) {
-                    throw new SecurityException("Permission denial: reading from settings requires:"
-                        + Manifest.permission.READ_DEVICE_CONFIG);
-                }
-            }
-        }
-
         private static void setMonitorCallbackAsUser(
                 @NonNull @CallbackExecutor Executor executor,
                 @NonNull ContentResolver resolver, @UserIdInt int userHandle,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 19d828b..5f4f317 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -1157,8 +1157,6 @@
             Slog.v(LOG_TAG, "getConfigSetting(" + name + ")");
         }
 
-        Settings.Config.enforceReadPermission(/*namespace=*/name.split("/")[0]);
-
         // Get the value.
         synchronized (mLock) {
             return mSettingsRegistry.getSettingLocked(SETTINGS_TYPE_CONFIG,
@@ -1338,9 +1336,6 @@
             Slog.v(LOG_TAG, "getAllConfigFlags() for " + prefix);
         }
 
-        Settings.Config.enforceReadPermission(
-                prefix != null ? prefix.split("/")[0] : null);
-
         synchronized (mLock) {
             // Get the settings.
             SettingsState settingsState = mSettingsRegistry.getSettingsLocked(
