diff --git a/src/com/android/settings/vpn2/AppDialogFragment.java b/src/com/android/settings/vpn2/AppDialogFragment.java index e70b41289e6..004ad809cfd 100644 --- a/src/com/android/settings/vpn2/AppDialogFragment.java +++ b/src/com/android/settings/vpn2/AppDialogFragment.java @@ -137,11 +137,8 @@ public class AppDialogFragment extends DialogFragment implements AppDialog.Liste private void onDisconnect(final DialogInterface dialog) { final int userId = UserHandle.getUserId(mPackageInfo.applicationInfo.uid); try { - final VpnConfig vpnConfig = mService.getVpnConfig(userId); - if (vpnConfig == null || vpnConfig.legacy) { - return; - } - if (mPackageInfo.packageName.equals(vpnConfig.user)) { + if (mPackageInfo.packageName.equals(getConnectedPackage(mService, userId))) { + mService.setAlwaysOnVpnPackage(userId, null); mService.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId); } } catch (RemoteException e) { @@ -149,4 +146,10 @@ public class AppDialogFragment extends DialogFragment implements AppDialog.Liste " for user " + userId, e); } } + + private static String getConnectedPackage(IConnectivityManager service, final int userId) + throws RemoteException { + final VpnConfig config = service.getVpnConfig(userId); + return config != null ? config.user : null; + } } diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java index f6058960c0c..6c47b438f0f 100644 --- a/src/com/android/settings/vpn2/VpnSettings.java +++ b/src/com/android/settings/vpn2/VpnSettings.java @@ -299,11 +299,6 @@ public class VpnSettings extends RestrictedSettingsFragment implements return true; } else if (preference instanceof AppPreference) { AppPreference pref = (AppPreference) preference; - if (pref.isAlwaysOn()) { - // User can't disconnect vpn when always-on is enabled - return true; - } - boolean connected = (pref.getState() == AppPreference.STATE_CONNECTED); if (!connected) {