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.PackageManager.NameNotFoundException;
|
||||||
import android.content.pm.ResolveInfo;
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
|
import android.content.pm.UserProperties;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
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)
|
final boolean isWork = args != null ? args.getInt(ProfileSelectFragment.EXTRA_PROFILE)
|
||||||
== ProfileSelectFragment.ProfileType.WORK : false;
|
== ProfileSelectFragment.ProfileType.WORK : false;
|
||||||
try {
|
try {
|
||||||
if (activity.getSystemService(UserManager.class).getUserProfiles().size() > 1
|
if (isNewTabNeeded(activity)
|
||||||
&& ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
|
&& ProfileFragmentBridge.FRAGMENT_MAP.get(fragmentName) != null
|
||||||
&& !isWork && !isPersonal) {
|
&& !isWork && !isPersonal) {
|
||||||
f = Fragment.instantiate(activity,
|
f = Fragment.instantiate(activity,
|
||||||
@@ -1177,6 +1178,24 @@ public final class Utils extends com.android.settingslib.Utils {
|
|||||||
return f;
|
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.
|
* Returns true if current binder uid is Settings Intelligence.
|
||||||
*/
|
*/
|
||||||
|
@@ -478,8 +478,9 @@ public class ManageApplications extends InstrumentedFragment
|
|||||||
mFilterAdapter.enableFilter(filterType);
|
mFilterAdapter.enableFilter(filterType);
|
||||||
|
|
||||||
if (mListType == LIST_TYPE_MAIN) {
|
if (mListType == LIST_TYPE_MAIN) {
|
||||||
if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
|
// Apply the personal and work filter only if new tab should be added
|
||||||
&& !mIsPersonalOnly) {
|
// 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_PERSONAL);
|
||||||
mFilterAdapter.enableFilter(FILTER_APPS_WORK);
|
mFilterAdapter.enableFilter(FILTER_APPS_WORK);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user