Support search for work profile settings page.

Test: manual, robotest
Bug: 254192800
Change-Id: Id8ec76557fc170fcf727da1971cd90f494c7ecd4
This commit is contained in:
Lili Zou
2023-01-18 17:36:54 +08:00
parent 9aabfafb4c
commit 2a445bb89e
4 changed files with 30 additions and 7 deletions

View File

@@ -17,10 +17,13 @@ import static android.provider.Settings.Secure.MANAGED_PROFILE_CONTACT_REMOTE_SE
import android.content.Context; import android.content.Context;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.slices.SliceData; import com.android.settings.slices.SliceData;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -34,9 +37,14 @@ public class ContactSearchPreferenceController extends BasePreferenceController
public ContactSearchPreferenceController(Context context, String key) { public ContactSearchPreferenceController(Context context, String key) {
super(context, 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; mManagedUser = managedUser;
} }

View File

@@ -19,10 +19,14 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import java.util.Set; import java.util.Set;
@@ -35,9 +39,14 @@ public class CrossProfileCalendarPreferenceController extends TogglePreferenceCo
public CrossProfileCalendarPreferenceController(Context context, String key) { public CrossProfileCalendarPreferenceController(Context context, String key) {
super(context, 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; mManagedUser = managedUser;
} }

View File

@@ -72,12 +72,10 @@ public class ManagedProfileSettings extends DashboardFragment {
super.onAttach(context); super.onAttach(context);
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
mManagedUser = getManagedUserFromArgument(); mManagedUser = getManagedUserFromArgument();
if (mManagedUser == null) { if (mManagedUser == null) {
getActivity().finish(); getActivity().finish();
} }
use(WorkModePreferenceController.class).setManagedUser(mManagedUser);
use(ContactSearchPreferenceController.class).setManagedUser(mManagedUser);
use(CrossProfileCalendarPreferenceController.class).setManagedUser(mManagedUser);
} }
@Override @Override
@@ -140,8 +138,11 @@ public class ManagedProfileSettings extends DashboardFragment {
} }
@Override @Override
protected boolean isPageSearchEnabled(Context context) { 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 { private class ManagedProfileBroadcastReceiver extends BroadcastReceiver {

View File

@@ -31,6 +31,7 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference; import androidx.preference.TwoStatePreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.slices.SliceData; import com.android.settings.slices.SliceData;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -56,9 +57,13 @@ public class WorkModePreferenceController extends BasePreferenceController imple
mIntentFilter = new IntentFilter(); mIntentFilter = new IntentFilter();
mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE); mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
mIntentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); 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; mManagedUser = managedUser;
} }