Skip to content

Commit fe57c98

Browse files
acjohnstongAndroid (Google) Code Review
authored andcommitted
Merge "Modify setApplicationHidden and isApplicationHidden APIs" into ub-testdpc-rvc
2 parents ffca871 + 1558978 commit fe57c98

File tree

3 files changed

+80
-0
lines changed

3 files changed

+80
-0
lines changed

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

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
296296
private static final String ADD_ACCOUNT_KEY = "add_account";
297297
private static final String REMOVE_ACCOUNT_KEY = "remove_account";
298298
private static final String HIDE_APPS_KEY = "hide_apps";
299+
private static final String HIDE_APPS_PARENT_KEY = "hide_apps_parent";
299300
private static final String INSTALL_CA_CERTIFICATE_KEY = "install_ca_certificate";
300301
private static final String INSTALL_KEY_CERTIFICATE_KEY = "install_key_certificate";
301302
private static final String INSTALL_NONMARKET_APPS_KEY
@@ -360,6 +361,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
360361
private static final String SYSTEM_UPDATE_PENDING_KEY = "system_update_pending";
361362
private static final String TEST_KEY_USABILITY_KEY = "test_key_usability";
362363
private static final String UNHIDE_APPS_KEY = "unhide_apps";
364+
private static final String UNHIDE_APPS_PARENT_KEY = "unhide_apps_parent";
363365
private static final String UNSUSPEND_APPS_KEY = "unsuspend_apps";
364366
private static final String CLEAR_APP_DATA_KEY = "clear_app_data";
365367
private static final String KEEP_UNINSTALLED_PACKAGES = "keep_uninstalled_packages";
@@ -458,6 +460,8 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
458460
private DpcPreference mLogoutUserPreference;
459461
private DpcPreference mManageLockTaskListPreference;
460462
private DpcPreference mSetLockTaskFeaturesPreference;
463+
private DpcPreference mUnhideAppsParentPreference;
464+
private DpcPreference mHideAppsParentPreference;
461465

462466
private DpcSwitchPreference mEnableLogoutPreference;
463467
private Preference mAffiliatedUserPreference;
@@ -639,7 +643,15 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
639643
findPreference(INSTALL_APK_PACKAGE_KEY).setOnPreferenceClickListener(this);
640644
findPreference(UNINSTALL_PACKAGE_KEY).setOnPreferenceClickListener(this);
641645
findPreference(HIDE_APPS_KEY).setOnPreferenceClickListener(this);
646+
mHideAppsParentPreference = (DpcPreference) findPreference(HIDE_APPS_PARENT_KEY);
647+
mHideAppsParentPreference.setOnPreferenceClickListener(this);
648+
mHideAppsParentPreference.setCustomConstraint(
649+
this::validateProfileOwnerOfOrganizationOwnedDevice);
642650
findPreference(UNHIDE_APPS_KEY).setOnPreferenceClickListener(this);
651+
mUnhideAppsParentPreference = (DpcPreference) findPreference(UNHIDE_APPS_PARENT_KEY);
652+
mUnhideAppsParentPreference.setOnPreferenceClickListener(this);
653+
mUnhideAppsParentPreference.setCustomConstraint(
654+
this::validateProfileOwnerOfOrganizationOwnedDevice);
643655
findPreference(SUSPEND_APPS_KEY).setOnPreferenceClickListener(this);
644656
findPreference(UNSUSPEND_APPS_KEY).setOnPreferenceClickListener(this);
645657
findPreference(CLEAR_APP_DATA_KEY).setOnPreferenceClickListener(this);
@@ -1030,9 +1042,15 @@ public void onPositiveButtonClicked(String[] lockTaskArray) {
10301042
case HIDE_APPS_KEY:
10311043
showHideAppsPrompt(false);
10321044
return true;
1045+
case HIDE_APPS_PARENT_KEY:
1046+
showHideAppsOnParentPrompt(false);
1047+
return true;
10331048
case UNHIDE_APPS_KEY:
10341049
showHideAppsPrompt(true);
10351050
return true;
1051+
case UNHIDE_APPS_PARENT_KEY:
1052+
showHideAppsOnParentPrompt(true);
1053+
return true;
10361054
case SUSPEND_APPS_KEY:
10371055
showSuspendAppsPrompt(false);
10381056
return true;
@@ -3128,6 +3146,52 @@ public void onClick(DialogInterface dialog, int position) {
31283146
}
31293147
}
31303148

3149+
@RequiresApi(api = Util.R_VERSION_CODE)
3150+
private void showHideAppsOnParentPrompt(final boolean showHiddenApps) {
3151+
final int dialogTitleResId;
3152+
final int successResId;
3153+
final int failureResId;
3154+
final int failureSystemResId;
3155+
if (showHiddenApps) {
3156+
// showing a dialog to unhide an app
3157+
dialogTitleResId = R.string.unhide_apps_parent_title;
3158+
successResId = R.string.unhide_apps_success;
3159+
failureResId = R.string.unhide_apps_failure;
3160+
failureSystemResId = R.string.unhide_apps_system_failure;
3161+
} else {
3162+
// showing a dialog to hide an app
3163+
dialogTitleResId = R.string.hide_apps_parent_title;
3164+
successResId = R.string.hide_apps_success;
3165+
failureResId = R.string.hide_apps_failure;
3166+
failureSystemResId = R.string.hide_apps_system_failure;
3167+
}
3168+
3169+
View view = getActivity().getLayoutInflater().inflate(R.layout.simple_edittext, null);
3170+
final EditText input = view.findViewById(R.id.input);
3171+
input.setHint(getString(R.string.input_package_name_hints));
3172+
3173+
new AlertDialog.Builder(getActivity())
3174+
.setTitle(getString(dialogTitleResId))
3175+
.setView(view)
3176+
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
3177+
String packageName = input.getText().toString();
3178+
try {
3179+
if (mDevicePolicyManager.getParentProfileInstance(mAdminComponentName)
3180+
.setApplicationHidden(mAdminComponentName, packageName,
3181+
!showHiddenApps)) {
3182+
showToast(successResId, packageName);
3183+
} else {
3184+
showToast(getString(failureResId, packageName), Toast.LENGTH_LONG);
3185+
}
3186+
} catch (IllegalArgumentException e) {
3187+
showToast(getString(failureSystemResId, packageName), Toast.LENGTH_LONG);
3188+
}
3189+
dialog.dismiss();
3190+
})
3191+
.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
3192+
.show();
3193+
}
3194+
31313195
/**
31323196
* Shows an alert dialog which displays a list of suspended/non-suspended apps.
31333197
*/

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,14 +361,20 @@
361361
<string name="install_apk_package_title">Install package from APK file</string>
362362
<string name="uninstall_packages_title">Uninstall package</string>
363363
<string name="hide_apps_title">Hide apps</string>
364+
<string name="hide_apps_parent_title">Hide apps on parent</string>
364365
<string name="hide_apps_empty">All apps are hidden.</string>
365366
<string name="hide_apps_success">%s is now hidden.</string>
366367
<string name="hide_apps_failure">%s cannot be hidden, because it is an active admin or
367368
required by the system.</string>
369+
<string name="hide_apps_system_failure">%s cannot be hidden, because the provided package
370+
is not a system package.</string>
368371
<string name="unhide_apps_title">Unhide apps</string>
372+
<string name="unhide_apps_parent_title">Unhide apps on parent</string>
369373
<string name="unhide_apps_empty">No apps are currently hidden.</string>
370374
<string name="unhide_apps_success">%s is no longer hidden.</string>
371375
<string name="unhide_apps_failure">%s cannot be unhidden.</string>
376+
<string name="unhide_apps_system_failure">%s cannot be unhidden, because the provided package
377+
is not a system package.</string>
372378
<string name="suspend_apps_title">Suspend apps</string>
373379
<string name="suspend_apps_empty">All apps are suspended.</string>
374380
<string name="suspend_apps_success">%s is now suspended.</string>

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,21 @@
143143
android:title="@string/hide_apps_title"
144144
testdpc:minSdkVersion="L"
145145
testdpc:delegation="delegation-package-access" />
146+
<com.afwsamples.testdpc.common.preference.DpcPreference
147+
android:key="hide_apps_parent"
148+
android:title="@string/hide_apps_parent_title"
149+
testdpc:minSdkVersion="R"
150+
testdpc:delegation="delegation-package-access" />
146151
<com.afwsamples.testdpc.common.preference.DpcPreference
147152
android:key="unhide_apps"
148153
android:title="@string/unhide_apps_title"
149154
testdpc:minSdkVersion="L"
150155
testdpc:delegation="delegation-package-access" />
156+
<com.afwsamples.testdpc.common.preference.DpcPreference
157+
android:key="unhide_apps_parent"
158+
android:title="@string/unhide_apps_parent_title"
159+
testdpc:minSdkVersion="R"
160+
testdpc:delegation="delegation-package-access" />
151161
<com.afwsamples.testdpc.common.preference.DpcPreference
152162
android:key="suspend_apps"
153163
android:title="@string/suspend_apps_title"

0 commit comments

Comments
 (0)