Skip to content

Commit 57de73c

Browse files
committed
Show security patch date under policy management.
To demonstrate the use of the Build.VERSION.SECURITY_PATCH property the value is retreived, parsed into a date and presented on the policy management list. Bug: 29565565 Change-Id: Id38af846a555a4e49041038c02cfb9b1638557ce
1 parent 17b5cfc commit 57de73c

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,13 @@
107107
import java.security.cert.CertificateException;
108108
import java.security.cert.CertificateFactory;
109109
import java.security.cert.X509Certificate;
110+
import java.text.DateFormat;
111+
import java.text.ParseException;
112+
import java.text.SimpleDateFormat;
110113
import java.util.ArrayList;
111114
import java.util.Arrays;
112115
import java.util.Collections;
116+
import java.util.Date;
113117
import java.util.HashSet;
114118
import java.util.List;
115119
import java.util.Set;
@@ -204,6 +208,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
204208
private static final String CREATE_AND_MANAGE_USER_KEY = "create_and_manage_user";
205209
private static final String DELEGATED_CERT_INSTALLER_KEY = "manage_cert_installer";
206210
private static final String DEVICE_OWNER_STATUS_KEY = "device_owner_status";
211+
private static final String SECURITY_PATCH_KEY = "security_patch";
207212
private static final String DISABLE_CAMERA_KEY = "disable_camera";
208213
private static final String DISABLE_KEYGUARD = "disable_keyguard";
209214
private static final String DISABLE_SCREEN_CAPTURE_KEY = "disable_screen_capture";
@@ -269,6 +274,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
269274
private static final String WIFI_CONFIG_LOCKDOWN_ON = "1";
270275
private static final String WIFI_CONFIG_LOCKDOWN_OFF = "0";
271276
private static final String SAFETYNET_ATTEST = "safetynet_attest";
277+
private static final String SECURITY_PATCH_FORMAT = "yyyy-MM-dd";
272278

273279
private static final String BATTERY_PLUGGED_ANY = Integer.toString(
274280
BatteryManager.BATTERY_PLUGGED_AC |
@@ -290,7 +296,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
290296
NETWORK_STATS_KEY, DELEGATED_CERT_INSTALLER_KEY, DISABLE_STATUS_BAR,
291297
REENABLE_STATUS_BAR, DISABLE_KEYGUARD, REENABLE_KEYGUARD, START_KIOSK_MODE,
292298
SET_PERMISSION_POLICY_KEY, MANAGE_APP_PERMISSIONS_KEY,STAY_ON_WHILE_PLUGGED_IN,
293-
WIFI_CONFIG_LOCKDOWN_ENABLE_KEY
299+
WIFI_CONFIG_LOCKDOWN_ENABLE_KEY, SECURITY_PATCH_KEY
294300
};
295301

296302
private static String[] NYC_PLUS_PREFERENCES = {
@@ -442,6 +448,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
442448
disableIncompatibleManagementOptionsInCurrentProfile();
443449
disableIncompatibleManagementOptionsByApiLevel();
444450

451+
loadSecurityPatch();
445452
reloadCameraDisableUi();
446453
reloadScreenCaptureDisableUi();
447454
reloadMuteAudioUi();
@@ -1402,6 +1409,26 @@ public void onClick(DialogInterface dialogInterface, int i) {
14021409
.show();
14031410
}
14041411

1412+
@TargetApi(Build.VERSION_CODES.M)
1413+
private void loadSecurityPatch() {
1414+
Preference securityPatchPreference = findPreference(SECURITY_PATCH_KEY);
1415+
if (!securityPatchPreference.isEnabled()) {
1416+
return;
1417+
}
1418+
1419+
String buildSecurityPatch = Build.VERSION.SECURITY_PATCH;
1420+
final Date date;
1421+
try {
1422+
date = new SimpleDateFormat(SECURITY_PATCH_FORMAT).parse(buildSecurityPatch);
1423+
} catch (ParseException e) {
1424+
securityPatchPreference.setSummary(
1425+
getString(R.string.invalid_security_patch, buildSecurityPatch));
1426+
return;
1427+
}
1428+
String display = DateFormat.getDateInstance(DateFormat.MEDIUM).format(date);
1429+
securityPatchPreference.setSummary(display);
1430+
}
1431+
14051432
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
14061433
private void reloadCameraDisableUi() {
14071434
boolean isCameraDisabled = mDevicePolicyManager.getCameraDisabled(mAdminComponentName);

app/src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@
119119
<string name="add">Add</string>
120120
<string name="clear">Clear</string>
121121

122+
<!-- Strings for system information -->
123+
<string name="invalid_security_patch">Invalid security patch format:
124+
<xliff:g id="security_patch">%s</xliff:g></string>
125+
<string name="security_patch">Security patch</string>
126+
122127
<!-- Strings for camera and screen capture -->
123128
<string name="camera_title">Camera, screen capture and audio</string>
124129
<string name="display_media">Display Media</string>

app/src/main/res/xml/device_policy_header.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
<Preference
2121
android:key="device_owner_status"
2222
android:selectable="false"/>
23+
<Preference
24+
android:key="security_patch"
25+
android:title="@string/security_patch"
26+
android:selectable="false"/>
2327

2428
<PreferenceCategory
2529
android:title="@string/accessibility_title">

0 commit comments

Comments
 (0)