Merge "AppClone: Add new tab only if any user handle has the property set."

This commit is contained in:
Ankita Vyas
2022-11-11 07:17:49 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 3 deletions

View File

@@ -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.
*/

View File

@@ -521,8 +521,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);
}