diff --git a/src/com/android/settings/accounts/ContactSearchPreferenceController.java b/src/com/android/settings/accounts/ContactSearchPreferenceController.java index 8b94ba1f853..5e4ef48d7c2 100644 --- a/src/com/android/settings/accounts/ContactSearchPreferenceController.java +++ b/src/com/android/settings/accounts/ContactSearchPreferenceController.java @@ -17,10 +17,13 @@ import static android.provider.Settings.Secure.MANAGED_PROFILE_CONTACT_REMOTE_SE import android.content.Context; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; +import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; +import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.slices.SliceData; import com.android.settingslib.RestrictedLockUtils; @@ -34,9 +37,14 @@ public class ContactSearchPreferenceController extends BasePreferenceController public ContactSearchPreferenceController(Context context, String key) { super(context, key); + // Set default managed profile for the current user, otherwise isAvailable will be false and + // the setting won't be searchable. + UserManager userManager = context.getSystemService(UserManager.class); + mManagedUser = Utils.getManagedProfile(userManager); } - public void setManagedUser(UserHandle managedUser) { + @VisibleForTesting + void setManagedUser(UserHandle managedUser) { mManagedUser = managedUser; } diff --git a/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java index 3dc05ef8f03..d36500180e0 100644 --- a/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java +++ b/src/com/android/settings/accounts/CrossProfileCalendarPreferenceController.java @@ -19,10 +19,14 @@ import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.TogglePreferenceController; import java.util.Set; @@ -35,9 +39,14 @@ public class CrossProfileCalendarPreferenceController extends TogglePreferenceCo public CrossProfileCalendarPreferenceController(Context context, String key) { super(context, key); + // Set default managed profile for the current user, otherwise isAvailable will be false and + // the setting won't be searchable. + UserManager userManager = context.getSystemService(UserManager.class); + mManagedUser = Utils.getManagedProfile(userManager); } - public void setManagedUser(UserHandle managedUser) { + @VisibleForTesting + void setManagedUser(UserHandle managedUser) { mManagedUser = managedUser; } diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java index 9c4d855f61b..e52926215b1 100644 --- a/src/com/android/settings/accounts/ManagedProfileSettings.java +++ b/src/com/android/settings/accounts/ManagedProfileSettings.java @@ -72,12 +72,10 @@ public class ManagedProfileSettings extends DashboardFragment { super.onAttach(context); mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); mManagedUser = getManagedUserFromArgument(); + if (mManagedUser == null) { getActivity().finish(); } - use(WorkModePreferenceController.class).setManagedUser(mManagedUser); - use(ContactSearchPreferenceController.class).setManagedUser(mManagedUser); - use(CrossProfileCalendarPreferenceController.class).setManagedUser(mManagedUser); } @Override @@ -140,8 +138,11 @@ public class ManagedProfileSettings extends DashboardFragment { } @Override protected boolean isPageSearchEnabled(Context context) { - return false; + UserManager userManager = context.getSystemService(UserManager.class); + UserHandle managedUser = Utils.getManagedProfile(userManager); + return managedUser != null; } + }; private class ManagedProfileBroadcastReceiver extends BroadcastReceiver { diff --git a/src/com/android/settings/accounts/WorkModePreferenceController.java b/src/com/android/settings/accounts/WorkModePreferenceController.java index f4ab195ad13..1941de45c4d 100644 --- a/src/com/android/settings/accounts/WorkModePreferenceController.java +++ b/src/com/android/settings/accounts/WorkModePreferenceController.java @@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen; import androidx.preference.TwoStatePreference; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.slices.SliceData; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -56,9 +57,13 @@ public class WorkModePreferenceController extends BasePreferenceController imple mIntentFilter = new IntentFilter(); mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE); mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); + // Set default managed profile for the current user, otherwise isAvailable will be false and + // the setting won't be searchable. + mManagedUser = Utils.getManagedProfile(mUserManager); } - public void setManagedUser(UserHandle managedUser) { + @VisibleForTesting + void setManagedUser(UserHandle managedUser) { mManagedUser = managedUser; }