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:
Edgar Wang
2019-10-29 19:38:10 +08:00
parent f30d10abf3
commit 44187c0bb3

View File

@@ -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);