Skip to content

Commit 6ced780

Browse files
committed
Use SwitchDpcPreference for user restrictions.
Change-Id: I67ad4b8d5f73fde5143bb18334a1ffda3a88b6de
1 parent 42976f5 commit 6ced780

File tree

3 files changed

+32
-45
lines changed

3 files changed

+32
-45
lines changed

app/src/main/java/com/afwsamples/testdpc/common/Util.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,4 @@ public static boolean isPrimaryUser(Context context) {
136136
return userManager.isSystemUser();
137137
}
138138
}
139-
140-
public static void disablePreference(Preference preference, int whyResId) {
141-
preference.setEnabled(false);
142-
preference.setSummary(whyResId);
143-
}
144139
}

app/src/main/java/com/afwsamples/testdpc/common/preference/DpcPreferenceHelper.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,20 @@ public class DpcPreferenceHelper {
5353
private int mAdminConstraint;
5454
private int mUserConstraint;
5555

56+
private static final int NUM_ADMIN_KINDS = 2;
5657
public static final int ADMIN_DEVICE_OWNER = 0x1;
5758
public static final int ADMIN_PROFILE_OWNER = 0x2;
5859
public static final int ADMIN_ANY = ADMIN_DEVICE_OWNER | ADMIN_PROFILE_OWNER;
5960

61+
private static final int NUM_USER_KINDS = 3;
6062
public static final int USER_PRIMARY_USER = 0x1;
6163
public static final int USER_SECONDARY_USER = 0x2;
6264
public static final int USER_MANAGED_PROFILE = 0x4;
6365
public static final int USER_ANY =
6466
USER_PRIMARY_USER | USER_SECONDARY_USER | USER_MANAGED_PROFILE;
65-
public static final int NOT_USER_PRIMARY_USER = USER_ANY & ~USER_PRIMARY_USER;
66-
public static final int NOT_USER_SECONDARY_USER = USER_ANY & ~USER_SECONDARY_USER;
67-
public static final int NOT_USER_MANAGED_PROFILE = USER_ANY & ~USER_MANAGED_PROFILE;
67+
public static final int USER_NOT_PRIMARY_USER = USER_ANY & ~USER_PRIMARY_USER;
68+
public static final int USER_NOT_SECONDARY_USER = USER_ANY & ~USER_SECONDARY_USER;
69+
public static final int USER_NOT_MANAGED_PROFILE = USER_ANY & ~USER_MANAGED_PROFILE;
6870

6971
public DpcPreferenceHelper(Context context, Preference preference, AttributeSet attrs) {
7072
mContext = context;
@@ -252,7 +254,7 @@ private boolean isEnabledForUser(int user) {
252254
}
253255

254256
private String getAdminConstraintSummary() {
255-
final List<String> admins = new ArrayList<>(3);
257+
final List<String> admins = new ArrayList<>(NUM_ADMIN_KINDS);
256258

257259
if (isEnabledForAdmin(ADMIN_DEVICE_OWNER)) {
258260
admins.add(mContext.getString(R.string.device_owner));
@@ -265,7 +267,7 @@ private String getAdminConstraintSummary() {
265267
}
266268

267269
private String getUserConstraintSummary() {
268-
final List<String> users = new ArrayList<>(3);
270+
final List<String> users = new ArrayList<>(NUM_USER_KINDS);
269271

270272
if (isEnabledForUser(USER_PRIMARY_USER)) {
271273
users.add(mContext.getString(R.string.primary_user));

app/src/main/java/com/afwsamples/testdpc/policy/UserRestrictionsDisplayFragment.java

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,20 @@
5555
import android.app.admin.DevicePolicyManager;
5656
import android.content.ComponentName;
5757
import android.content.Context;
58+
import android.os.Build;
5859
import android.os.Bundle;
5960
import android.os.UserManager;
6061
import android.support.v14.preference.PreferenceFragment;
61-
import android.support.v14.preference.SwitchPreference;
6262
import android.support.v7.preference.Preference;
6363
import android.support.v7.preference.PreferenceScreen;
6464
import android.util.Log;
6565
import android.widget.Toast;
6666

6767
import com.afwsamples.testdpc.DeviceAdminReceiver;
6868
import com.afwsamples.testdpc.R;
69-
import com.afwsamples.testdpc.common.Util;
69+
import com.afwsamples.testdpc.common.preference.DpcPreferenceBase;
70+
import com.afwsamples.testdpc.common.preference.DpcPreferenceHelper;
71+
import com.afwsamples.testdpc.common.preference.DpcSwitchPreference;
7072

7173
public class UserRestrictionsDisplayFragment extends PreferenceFragment
7274
implements Preference.OnPreferenceChangeListener {
@@ -195,17 +197,17 @@ public void onCreatePreferences(Bundle bundle, String rootkey) {
195197
getPreferenceManager().getContext());
196198
setPreferenceScreen(preferenceScreen);
197199

200+
final Context preferenceContext = getPreferenceManager().getContext();
198201
for (UserRestriction restriction : ALL_USER_RESTRICTIONS) {
199-
SwitchPreference preference = new SwitchPreference(getPreferenceManager().getContext());
202+
DpcSwitchPreference preference = new DpcSwitchPreference(preferenceContext);
200203
preference.setTitle(restriction.titleResId);
201204
preference.setKey(restriction.key);
202205
preference.setOnPreferenceChangeListener(this);
203206
preferenceScreen.addPreference(preference);
204207
}
205208

206209
updateAllUserRestrictions();
207-
disableIncompatibleRestrictionsByApiLevel();
208-
disableIncompatibleRestrictionsByUserType();
210+
constrainPerferences();
209211
}
210212

211213
@Override
@@ -246,43 +248,31 @@ private void updateAllUserRestrictions() {
246248
}
247249

248250
private void updateUserRestriction(String userRestriction) {
249-
SwitchPreference preference = (SwitchPreference) findPreference(userRestriction);
251+
DpcSwitchPreference preference = (DpcSwitchPreference) findPreference(userRestriction);
250252
boolean disallowed = mUserManager.hasUserRestriction(userRestriction);
251253
preference.setChecked(disallowed);
252254
}
253255

254-
private void disableIncompatibleRestrictionsByApiLevel() {
255-
if (Util.isBeforeM()) {
256-
for (String restriction : MNC_PLUS_RESTRICTIONS) {
257-
Util.disablePreference(findPreference(restriction), R.string.requires_android_m);
258-
}
256+
private void constrainPerferences() {
257+
for (String restriction : MNC_PLUS_RESTRICTIONS) {
258+
DpcPreferenceBase pref = (DpcPreferenceBase) findPreference(restriction);
259+
pref.setMinSdkVersion(Build.VERSION_CODES.M);
259260
}
260-
if (Util.isBeforeN()) {
261-
for (String restriction : NYC_PLUS_RESTRICTIONS) {
262-
Util.disablePreference(findPreference(restriction), R.string.requires_android_n);
263-
}
261+
for (String restriction : NYC_PLUS_RESTRICTIONS) {
262+
DpcPreferenceBase pref = (DpcPreferenceBase) findPreference(restriction);
263+
pref.setMinSdkVersion(Build.VERSION_CODES.N);
264264
}
265-
}
266-
267-
private void disableIncompatibleRestrictionsByUserType() {
268-
String pkgName = getActivity().getPackageName();
269-
boolean isProfileOwner = mDevicePolicyManager.isProfileOwnerApp(pkgName);
270-
boolean isDeviceOwner = mDevicePolicyManager.isDeviceOwnerApp(pkgName);
271-
if (isProfileOwner) {
272-
for (String restriction : PRIMARY_USER_ONLY_RESTRICTIONS) {
273-
Util.disablePreference(findPreference(restriction), R.string.primary_user_only);
274-
}
275-
} else if (isDeviceOwner) {
276-
for (String restriction : MANAGED_PROFILE_ONLY_RESTRICTIONS) {
277-
Util.disablePreference(findPreference(restriction), R.string.managed_profile_only);
278-
}
265+
for (String restriction : PRIMARY_USER_ONLY_RESTRICTIONS) {
266+
DpcPreferenceBase pref = (DpcPreferenceBase) findPreference(restriction);
267+
pref.setUserConstraint(DpcPreferenceHelper.USER_PRIMARY_USER);
279268
}
280-
281-
if (Util.isManagedProfile(getActivity(), mAdminComponentName)) {
282-
for (String restriction : NON_MANAGED_PROFILE_RESTRICTIONS) {
283-
Util.disablePreference(findPreference(restriction),
284-
R.string.not_for_managed_profile);
285-
}
269+
for (String restriction : MANAGED_PROFILE_ONLY_RESTRICTIONS) {
270+
DpcPreferenceBase pref = (DpcPreferenceBase) findPreference(restriction);
271+
pref.setUserConstraint(DpcPreferenceHelper.USER_MANAGED_PROFILE);
272+
}
273+
for (String restriction : NON_MANAGED_PROFILE_RESTRICTIONS) {
274+
DpcPreferenceBase pref = (DpcPreferenceBase) findPreference(restriction);
275+
pref.setUserConstraint(DpcPreferenceHelper.USER_NOT_MANAGED_PROFILE);
286276
}
287277
}
288278

0 commit comments

Comments
 (0)