Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e64bb2f9 authored by Hai Zhang's avatar Hai Zhang Committed by android-build-merger
Browse files

Don't show Settings as a home app anywhere in UI. am: 1719c99a

am: 6490740b

Change-Id: Ie6ed99ca8630a6a89f2c9045632277520c764c77
parents b4bd22a3 6490740b
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -125,13 +125,18 @@ public class HomeRoleBehavior implements RoleBehavior {
        preference.setOnSecondTargetClickListener(listener);
    }

    @Override
    public boolean isApplicationVisibleAsUser(@NonNull Role role,
            @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user,
            @NonNull Context context) {
        // Home is not available for work profile, so we can just use the current user.
        return !isSettingsApplication(applicationInfo, context);
    }

    @Override
    public void prepareApplicationPreferenceAsUser(@NonNull Role role,
            @NonNull Preference preference, @NonNull ApplicationInfo applicationInfo,
            @NonNull UserHandle user, @NonNull Context context) {
        // Home is not available for work profile, so we can just use the current user.
        boolean isSettingsApplication = isSettingsApplication(applicationInfo, context);
        preference.setVisible(!isSettingsApplication);
        boolean missingWorkProfileSupport = isMissingWorkProfileSupport(applicationInfo, context);
        preference.setEnabled(!missingWorkProfileSupport);
        preference.setSummary(missingWorkProfileSupport ? context.getString(
+17 −0
Original line number Diff line number Diff line
@@ -368,6 +368,23 @@ public class Role {
        }
    }

    /**
     * Check whether a qualifying application should be visible to user.
     *
     * @param applicationInfo the {@link ApplicationInfo} for the application
     * @param user the user for the application
     * @param context the {@code Context} to retrieve system services
     *
     * @return whether the qualifying application should be visible to user
     */
    public boolean isApplicationVisibleAsUser(@NonNull ApplicationInfo applicationInfo,
            @NonNull UserHandle user, @NonNull Context context) {
        if (mBehavior != null) {
            return mBehavior.isApplicationVisibleAsUser(this, applicationInfo, user, context);
        }
        return true;
    }

    /**
     * Prepare a {@link Preference} for an application.
     *
+9 −0
Original line number Diff line number Diff line
@@ -83,6 +83,15 @@ public interface RoleBehavior {
            @NonNull TwoTargetPreference preference, @NonNull UserHandle user,
            @NonNull Context context) {}

    /**
     * @see Role#isApplicationVisibleAsUser(ApplicationInfo, UserHandle, Context)
     */
    default boolean isApplicationVisibleAsUser(@NonNull Role role,
            @NonNull ApplicationInfo applicationInfo, @NonNull UserHandle user,
            @NonNull Context context) {
        return true;
    }

    /**
     * @see Role#prepareApplicationPreferenceAsUser(Preference, ApplicationInfo, UserHandle,
     *      Context)
+3 −0
Original line number Diff line number Diff line
@@ -94,6 +94,9 @@ public class RoleLiveData extends AsyncTaskLiveData<List<Pair<ApplicationInfo, B
                        + qualifyingPackageName);
                continue;
            }
            if (!mRole.isApplicationVisibleAsUser(qualifyingApplicationInfo, mUser, mContext)) {
                continue;
            }
            boolean isHolderApplication = holderPackageNames.contains(qualifyingPackageName);
            qualifyingApplications.add(new Pair<>(qualifyingApplicationInfo, isHolderApplication));
        }