@@ -296,6 +296,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
296
296
private static final String ADD_ACCOUNT_KEY = "add_account" ;
297
297
private static final String REMOVE_ACCOUNT_KEY = "remove_account" ;
298
298
private static final String HIDE_APPS_KEY = "hide_apps" ;
299
+ private static final String HIDE_APPS_PARENT_KEY = "hide_apps_parent" ;
299
300
private static final String INSTALL_CA_CERTIFICATE_KEY = "install_ca_certificate" ;
300
301
private static final String INSTALL_KEY_CERTIFICATE_KEY = "install_key_certificate" ;
301
302
private static final String INSTALL_NONMARKET_APPS_KEY
@@ -360,6 +361,7 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
360
361
private static final String SYSTEM_UPDATE_PENDING_KEY = "system_update_pending" ;
361
362
private static final String TEST_KEY_USABILITY_KEY = "test_key_usability" ;
362
363
private static final String UNHIDE_APPS_KEY = "unhide_apps" ;
364
+ private static final String UNHIDE_APPS_PARENT_KEY = "unhide_apps_parent" ;
363
365
private static final String UNSUSPEND_APPS_KEY = "unsuspend_apps" ;
364
366
private static final String CLEAR_APP_DATA_KEY = "clear_app_data" ;
365
367
private static final String KEEP_UNINSTALLED_PACKAGES = "keep_uninstalled_packages" ;
@@ -458,6 +460,8 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
458
460
private DpcPreference mLogoutUserPreference ;
459
461
private DpcPreference mManageLockTaskListPreference ;
460
462
private DpcPreference mSetLockTaskFeaturesPreference ;
463
+ private DpcPreference mUnhideAppsParentPreference ;
464
+ private DpcPreference mHideAppsParentPreference ;
461
465
462
466
private DpcSwitchPreference mEnableLogoutPreference ;
463
467
private Preference mAffiliatedUserPreference ;
@@ -639,7 +643,15 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
639
643
findPreference (INSTALL_APK_PACKAGE_KEY ).setOnPreferenceClickListener (this );
640
644
findPreference (UNINSTALL_PACKAGE_KEY ).setOnPreferenceClickListener (this );
641
645
findPreference (HIDE_APPS_KEY ).setOnPreferenceClickListener (this );
646
+ mHideAppsParentPreference = (DpcPreference ) findPreference (HIDE_APPS_PARENT_KEY );
647
+ mHideAppsParentPreference .setOnPreferenceClickListener (this );
648
+ mHideAppsParentPreference .setCustomConstraint (
649
+ this ::validateProfileOwnerOfOrganizationOwnedDevice );
642
650
findPreference (UNHIDE_APPS_KEY ).setOnPreferenceClickListener (this );
651
+ mUnhideAppsParentPreference = (DpcPreference ) findPreference (UNHIDE_APPS_PARENT_KEY );
652
+ mUnhideAppsParentPreference .setOnPreferenceClickListener (this );
653
+ mUnhideAppsParentPreference .setCustomConstraint (
654
+ this ::validateProfileOwnerOfOrganizationOwnedDevice );
643
655
findPreference (SUSPEND_APPS_KEY ).setOnPreferenceClickListener (this );
644
656
findPreference (UNSUSPEND_APPS_KEY ).setOnPreferenceClickListener (this );
645
657
findPreference (CLEAR_APP_DATA_KEY ).setOnPreferenceClickListener (this );
@@ -1030,9 +1042,15 @@ public void onPositiveButtonClicked(String[] lockTaskArray) {
1030
1042
case HIDE_APPS_KEY :
1031
1043
showHideAppsPrompt (false );
1032
1044
return true ;
1045
+ case HIDE_APPS_PARENT_KEY :
1046
+ showHideAppsOnParentPrompt (false );
1047
+ return true ;
1033
1048
case UNHIDE_APPS_KEY :
1034
1049
showHideAppsPrompt (true );
1035
1050
return true ;
1051
+ case UNHIDE_APPS_PARENT_KEY :
1052
+ showHideAppsOnParentPrompt (true );
1053
+ return true ;
1036
1054
case SUSPEND_APPS_KEY :
1037
1055
showSuspendAppsPrompt (false );
1038
1056
return true ;
@@ -3128,6 +3146,52 @@ public void onClick(DialogInterface dialog, int position) {
3128
3146
}
3129
3147
}
3130
3148
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
+
3131
3195
/**
3132
3196
* Shows an alert dialog which displays a list of suspended/non-suspended apps.
3133
3197
*/
0 commit comments