AppClone: Add new tab only if any user handle has the property set.
This will ensure that a new tab is not created for clone profile. The existing behavior of creating work tab when managed profile is present on device remains as-is. Bug: 248204976 Test: manual (verfied with primary, clone and managed profile present on device at the same time) Test: make RunSettingsRoboTests -j Change-Id: I116a0de69c51e90aa59fdb47e904c567e5d62102
This commit is contained in:
@@ -41,6 +41,7 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.content.pm.UserProperties;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.TypedArray;
|
||||
@@ -1163,7 +1164,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
final boolean isWork = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
|
||||
== ProfileSelectFragment.ProfileType.WORK : false;
|
||||
try {
|
||||
if (activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
|
||||
if (isNewTabNeeded(activity)
|
||||
&& ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
|
||||
&& !isWork && !isPersonal) {
|
||||
f = Fragment.instantiate(activity,
|
||||
@@ -1177,6 +1178,24 @@ public final class Utils extends com.android.settingslib.Utils {
|
||||
return f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a new tab is needed or not for any user profile associated with the context user.
|
||||
*
|
||||
* <p> Checks if any user has the property {@link UserProperties#SHOW_IN_SETTINGS_SEPARATE} set.
|
||||
*/
|
||||
public static boolean isNewTabNeeded(Activity activity) {
|
||||
UserManager userManager = activity.getSystemService(UserManager.class);
|
||||
List<UserHandle> profiles = userManager.getUserProfiles();
|
||||
for (UserHandle userHandle : profiles) {
|
||||
UserProperties userProperties = userManager.getUserProperties(userHandle);
|
||||
if (userProperties.getShowInSettings()
|
||||
== UserProperties.SHOW_IN_SETTINGS_SEPARATE) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if current binder uid is Settings Intelligence.
|
||||
*/
|
||||
|
@@ -478,8 +478,9 @@ public class ManageApplications extends InstrumentedFragment
|
||||
mFilterAdapter.enableFilter(filterType);
|
||||
|
||||
if (mListType == LIST_TYPE_MAIN) {
|
||||
if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
|
||||
&& !mIsPersonalOnly) {
|
||||
// Apply the personal and work filter only if new tab should be added
|
||||
// for a given user profile. Else let it use the default all apps filter.
|
||||
if (Utils.isNewTabNeeded(getActivity()) && !mIsWorkOnly && !mIsPersonalOnly) {
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_PERSONAL);
|
||||
mFilterAdapter.enableFilter(FILTER_APPS_WORK);
|
||||
}
|
||||
|
Reference in New Issue
Block a user