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
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user