Disable Settings toggle if admin has set always-on VPN
If the admin has turned on always-on VPN, do not allow the user to modify it. Bug: 137938969 Test: manually set always-on VPN and check Settings is disabled Change-Id: Id2541e120f043ce24e52c3189d3a6fb1d85b432b
This commit is contained in:
@@ -21,6 +21,7 @@ import static android.app.AppOpsManager.OP_ACTIVATE_VPN;
|
|||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.app.AppOpsManager;
|
import android.app.AppOpsManager;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
@@ -48,6 +49,8 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.RestrictedSwitchPreference;
|
import com.android.settingslib.RestrictedSwitchPreference;
|
||||||
|
|
||||||
@@ -67,6 +70,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
private static final String KEY_FORGET_VPN = "forget_vpn";
|
private static final String KEY_FORGET_VPN = "forget_vpn";
|
||||||
|
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
|
private DevicePolicyManager mDevicePolicyManager;
|
||||||
private ConnectivityManager mConnectivityManager;
|
private ConnectivityManager mConnectivityManager;
|
||||||
private IConnectivityManager mConnectivityService;
|
private IConnectivityManager mConnectivityService;
|
||||||
|
|
||||||
@@ -119,6 +123,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
addPreferencesFromResource(R.xml.vpn_app_management);
|
addPreferencesFromResource(R.xml.vpn_app_management);
|
||||||
|
|
||||||
mPackageManager = getContext().getPackageManager();
|
mPackageManager = getContext().getPackageManager();
|
||||||
|
mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
|
||||||
mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
|
mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
|
||||||
mConnectivityService = IConnectivityManager.Stub
|
mConnectivityService = IConnectivityManager.Stub
|
||||||
.asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
|
.asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
|
||||||
@@ -250,6 +255,15 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
mPreferenceForget.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN,
|
mPreferenceForget.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN,
|
||||||
mUserId);
|
mUserId);
|
||||||
|
|
||||||
|
if (mPackageName.equals(mDevicePolicyManager.getAlwaysOnVpnPackage())) {
|
||||||
|
EnforcedAdmin admin = RestrictedLockUtils.getProfileOrDeviceOwner(
|
||||||
|
getContext(), UserHandle.of(mUserId));
|
||||||
|
mPreferenceAlwaysOn.setDisabledByAdmin(admin);
|
||||||
|
mPreferenceForget.setDisabledByAdmin(admin);
|
||||||
|
if (mDevicePolicyManager.isAlwaysOnVpnLockdownEnabled()) {
|
||||||
|
mPreferenceLockdown.setDisabledByAdmin(admin);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mConnectivityManager.isAlwaysOnVpnPackageSupportedForUser(mUserId, mPackageName)) {
|
if (mConnectivityManager.isAlwaysOnVpnPackageSupportedForUser(mUserId, mPackageName)) {
|
||||||
// setSummary doesn't override the admin message when user restriction is applied
|
// setSummary doesn't override the admin message when user restriction is applied
|
||||||
mPreferenceAlwaysOn.setSummary(R.string.vpn_always_on_summary);
|
mPreferenceAlwaysOn.setSummary(R.string.vpn_always_on_summary);
|
||||||
|
Reference in New Issue
Block a user