Apply SettingsLib SeekBarPreference to Settings

Bug: 176818438
Test: robotest

Change-Id: I219878716457ce4bb7cad251bccf5d50d93030a5
This commit is contained in:
Edgar Wang
2020-11-30 18:07:24 +08:00
parent 4abbe80385
commit d6b5bbb5cb
40 changed files with 149 additions and 1264 deletions

View File

@@ -27,9 +27,11 @@ import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import androidx.preference.Preference;
import com.android.settings.AccessiblePreferenceCategory;
import com.android.settingslib.Restrictable;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
import java.util.ArrayList;
@@ -42,34 +44,74 @@ public class AccountRestrictionHelper {
}
/**
* Configure the UI of the preference by checking user restriction.
* @param preference The preference we are configuring.
* @param userRestriction The user restriction related to the preference.
* @param userId The user that we retrieve user restriction of.
* Checks if the account should be shown based on the required authorities for the account type
*
* @param authorities given authority that is passed as activity extra
* @param auths list of authorities for particular account type
* @return true if the activity has the required authority to show the account
*/
public void enforceRestrictionOnPreference(RestrictedPreference preference,
String userRestriction, @UserIdInt int userId) {
public static boolean showAccount(String[] authorities, ArrayList<String> auths) {
boolean showAccount = true;
if (authorities != null && auths != null) {
showAccount = false;
for (String requestedAuthority : authorities) {
if (auths.contains(requestedAuthority)) {
return true;
}
}
}
return showAccount;
}
/**
* Configure the UI of the preference by checking user restriction.
*
* @param preference The preference we are configuring.
* @param userRestriction The user restriction related to the preference.
* @param userId The user that we retrieve user restriction of.
*/
public void enforceRestrictionOnPreference(Preference preference,
String userRestriction, @UserIdInt int userId) {
if (preference == null) {
return;
}
if (!(preference instanceof Restrictable)) {
return;
}
final Restrictable restrictedPreference = (Restrictable) preference;
if (hasBaseUserRestriction(userRestriction, userId)) {
if (userRestriction.equals(DISALLOW_REMOVE_MANAGED_PROFILE)
&& isOrganizationOwnedDevice()) {
preference.setDisabledByAdmin(getEnforcedAdmin(userRestriction, userId));
restrictedPreference.setDisabledByAdmin(getEnforcedAdmin(userRestriction, userId));
} else {
preference.setEnabled(false);
}
} else {
preference.checkRestrictionAndSetDisabled(userRestriction, userId);
restrictedPreference.checkRestrictionAndSetDisabled(userRestriction, userId);
}
}
/**
* Check if the system has set the user restriction.
* @param userRestriction The user restriction.
* @param userId The user that we retrieve user restriction of.
* @return {@code true} if set restriction.
*/
public boolean hasBaseUserRestriction(String userRestriction, @UserIdInt int userId) {
return RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext, userRestriction,
userId);
}
private boolean isOrganizationOwnedDevice() {
/**
* Apps can use this method to find out if the device was provisioned as
* organization-owend device.
*
* @return {@code true} if the device was provisioned as organization-owned device,
* {@code false} otherwise.
*/
public boolean isOrganizationOwnedDevice() {
final DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(
Context.DEVICE_POLICY_SERVICE);
if (dpm == null) {
@@ -78,7 +120,13 @@ public class AccountRestrictionHelper {
return dpm.isOrganizationOwnedDeviceWithManagedProfile();
}
private EnforcedAdmin getEnforcedAdmin(String userRestriction, int userId) {
/**
* Get the restriction enforced by admin
* @param userRestriction The user restriction.
* @param userId The user that we retrieve user restriction of.
* @return {EnforcedAdmin}
*/
public EnforcedAdmin getEnforcedAdmin(String userRestriction, int userId) {
final DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(
Context.DEVICE_POLICY_SERVICE);
if (dpm == null) {
@@ -107,23 +155,4 @@ public class AccountRestrictionHelper {
public AccessiblePreferenceCategory createAccessiblePreferenceCategory(Context context) {
return new AccessiblePreferenceCategory(context);
}
/**
* Checks if the account should be shown based on the required authorities for the account type
* @param authorities given authority that is passed as activity extra
* @param auths list of authorities for particular account type
* @return true if the activity has the required authority to show the account
*/
public static boolean showAccount(String[] authorities, ArrayList<String> auths) {
boolean showAccount = true;
if (authorities != null && auths != null) {
showAccount = false;
for (String requestedAuthority : authorities) {
if (auths.contains(requestedAuthority)) {
return true;
}
}
}
return showAccount;
}
}