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.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;
}

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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;
}