Restrict user to clear app defaults when DISALLOW_APPS_CONTROL policy is enabled.
- In App Info -> Open by defult -> Other defaults -> Clear defaults
User should not able to clear app defaults when DISALLOW_APPS_CONTROL
policy is enabled
Fixes: 140934406
Test: manual & robotest
Change-Id: Ia1aea3846d96b6faf9a1953101bafa4d2992322b
diff --git a/src/com/android/settings/applications/ClearDefaultsPreference.java b/src/com/android/settings/applications/ClearDefaultsPreference.java
index 768fb4e..f946636 100644
--- a/src/com/android/settings/applications/ClearDefaultsPreference.java
+++ b/src/com/android/settings/applications/ClearDefaultsPreference.java
@@ -24,6 +24,7 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
+import android.os.UserManager;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.BulletSpan;
@@ -38,12 +39,15 @@
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState;
public class ClearDefaultsPreference extends Preference {
protected static final String TAG = ClearDefaultsPreference.class.getSimpleName();
+ protected ApplicationsState.AppEntry mAppEntry;
private Button mActivitiesButton;
@@ -51,7 +55,9 @@
private IUsbManager mUsbManager;
private PackageManager mPm;
private String mPackageName;
- protected ApplicationsState.AppEntry mAppEntry;
+
+ private final boolean mAppsControlDisallowedBySystem;
+ private final RestrictedLockUtils.EnforcedAdmin mAppsControlDisallowedAdmin;
public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
@@ -63,6 +69,13 @@
mPm = context.getPackageManager();
IBinder b = ServiceManager.getService(Context.USB_SERVICE);
mUsbManager = IUsbManager.Stub.asInterface(b);
+
+ mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+ getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+ mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+ getContext(), UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId());
+
+
}
public ClearDefaultsPreference(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -95,6 +108,12 @@
mActivitiesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ if (mAppsControlDisallowedAdmin != null && !mAppsControlDisallowedBySystem) {
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
+ getContext(), mAppsControlDisallowedAdmin);
+ return;
+ }
+
if (mUsbManager != null) {
final int userId = UserHandle.myUserId();
mPm.clearPackagePreferredActivities(mPackageName);