diff --git a/src/com/android/settings/applications/ClearDefaultsPreference.java b/src/com/android/settings/applications/ClearDefaultsPreference.java
index 768fb4e..f946636 100644
--- a/src/com/android/settings/applications/ClearDefaultsPreference.java
+++ b/src/com/android/settings/applications/ClearDefaultsPreference.java
@@ -24,6 +24,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.style.BulletSpan;
@@ -38,12 +39,15 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
 import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.applications.ApplicationsState;
 
 public class ClearDefaultsPreference extends Preference {
 
     protected static final String TAG = ClearDefaultsPreference.class.getSimpleName();
+    protected ApplicationsState.AppEntry mAppEntry;
 
     private Button mActivitiesButton;
 
@@ -51,7 +55,9 @@
     private IUsbManager mUsbManager;
     private PackageManager mPm;
     private String mPackageName;
-    protected ApplicationsState.AppEntry mAppEntry;
+
+    private final boolean mAppsControlDisallowedBySystem;
+    private final RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
 
     public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr,
             int defStyleRes) {
@@ -63,6 +69,13 @@
         mPm = context.getPackageManager();
         IBinder b = ServiceManager.getService(Context.USB_SERVICE);
         mUsbManager = IUsbManager.Stub.asInterface(b);
+
+        mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+                getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+        mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+                getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+
+
     }
 
     public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -95,6 +108,12 @@
         mActivitiesButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
+                if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
+                    RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+                            getContext(), mAppsControlDisallowedAdmin);
+                    return;
+                }
+
                 if (mUsbManager != null) {
                     final int userId = UserHandle.myUserId();
                     mPm.clearPackagePreferredActivities(mPackageName);
