Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44187c0b authored by Edgar Wang's avatar Edgar Wang
Browse files

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
parent f30d10ab
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.IBinder;
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.Preference;
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 @@ public class ClearDefaultsPreference extends Preference {
    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 @@ public class ClearDefaultsPreference extends Preference {
        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 @@ public class ClearDefaultsPreference extends Preference {
        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);