Loading src/com/android/settings/network/VpnPreferenceController.java +14 −24 Original line number Diff line number Diff line Loading @@ -19,12 +19,10 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.RemoteException; import android.os.ServiceManager; import android.net.VpnManager; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; Loading Loading @@ -64,7 +62,7 @@ public class VpnPreferenceController extends AbstractPreferenceController private final String mToggleable; private final UserManager mUserManager; private final ConnectivityManager mConnectivityManager; private final IConnectivityManager mConnectivityManagerService; private final VpnManager mVpnManager; private Preference mPreference; public VpnPreferenceController(Context context) { Loading @@ -74,8 +72,7 @@ public class VpnPreferenceController extends AbstractPreferenceController mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); mConnectivityManagerService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mVpnManager = context.getSystemService(VpnManager.class); } @Override Loading Loading @@ -122,28 +119,21 @@ public class VpnPreferenceController extends AbstractPreferenceController } // Copied from SystemUI::SecurityControllerImpl SparseArray<VpnConfig> vpns = new SparseArray<>(); try { final List<UserInfo> users = mUserManager.getUsers(); for (UserInfo user : users) { VpnConfig cfg = mConnectivityManagerService.getVpnConfig(user.id); VpnConfig cfg = mVpnManager.getVpnConfig(user.id); if (cfg == null) { continue; } else if (cfg.legacy) { // Legacy VPNs should do nothing if the network is disconnected. Third-party // VPN warnings need to continue as traffic can still go to the app. final LegacyVpnInfo legacyVpn = mConnectivityManagerService.getLegacyVpnInfo(user.id); final LegacyVpnInfo legacyVpn = mVpnManager.getLegacyVpnInfo(user.id); if (legacyVpn == null || legacyVpn.state != LegacyVpnInfo.STATE_CONNECTED) { continue; } } vpns.put(user.id, cfg); } } catch (RemoteException rme) { // Roll back to previous state Log.e(TAG, "Unable to list active VPNs", rme); return; } final UserInfo userInfo = mUserManager.getUserInfo(UserHandle.myUserId()); final int uid; if (userInfo.isRestricted()) { Loading src/com/android/settings/vpn2/AppDialogFragment.java +12 −24 Original line number Diff line number Diff line Loading @@ -18,17 +18,13 @@ package com.android.settings.vpn2; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.net.IConnectivityManager; import android.net.ConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; Loading @@ -52,9 +48,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App private PackageInfo mPackageInfo; private Listener mListener; private ConnectivityManager mConnectivityManager; private UserManager mUserManager; private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private VpnManager mVpnManager; @Override public int getMetricsCategory() { Loading Loading @@ -97,7 +93,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mConnectivityManager = getContext().getSystemService(ConnectivityManager.class); mUserManager = UserManager.get(getContext()); mVpnManager = getContext().getSystemService(VpnManager.class); } @Override Loading Loading @@ -145,14 +143,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App return; } final int userId = getUserId(); try { mService.setVpnPackageAuthorization( mVpnManager.setVpnPackageAuthorization( mPackageInfo.packageName, userId, VpnManager.TYPE_VPN_NONE); onDisconnect(dialog); } catch (RemoteException e) { Log.e(TAG, "Failed to forget authorization of " + mPackageInfo.packageName + " for user " + userId, e); } if (mListener != null) { mListener.onForget(); Loading @@ -164,15 +157,10 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App return; } final int userId = getUserId(); try { if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mService, userId))) { mService.setAlwaysOnVpnPackage(userId, null, /* lockdownEnabled */ false, /* lockdownWhitelist */ null); mService.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId); } } catch (RemoteException e) { Log.e(TAG, "Failed to disconnect package " + mPackageInfo.packageName + " for user " + userId, e); if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mVpnManager, userId))) { mConnectivityManager.setAlwaysOnVpnPackageForUser(userId, null, /* lockdownEnabled */ false, /* lockdownAllowlist */ null); mVpnManager.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId); } } Loading src/com/android/settings/vpn2/AppManagementFragment.java +5 −13 Original line number Diff line number Diff line Loading @@ -29,10 +29,8 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; Loading Loading @@ -72,7 +70,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment private PackageManager mPackageManager; private DevicePolicyManager mDevicePolicyManager; private ConnectivityManager mConnectivityManager; private IConnectivityManager mConnectivityService; private VpnManager mVpnManager; // VPN app info private final int mUserId = UserHandle.myUserId(); Loading Loading @@ -125,8 +123,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment mPackageManager = getContext().getPackageManager(); mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class); mConnectivityManager = getContext().getSystemService(ConnectivityManager.class); mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mVpnManager = getContext().getSystemService(VpnManager.class); mPreferenceVersion = findPreference(KEY_VERSION); mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN); Loading Loading @@ -335,13 +332,8 @@ public class AppManagementFragment extends SettingsPreferenceFragment * @return {@code true} if another VPN (VpnService or legacy) is connected or set as always-on. */ private boolean isAnotherVpnActive() { try { final VpnConfig config = mConnectivityService.getVpnConfig(mUserId); final VpnConfig config = mVpnManager.getVpnConfig(mUserId); return config != null && !TextUtils.equals(config.user, mPackageName); } catch (RemoteException e) { Log.w(TAG, "Failure to look up active VPN", e); return false; } } public static class CannotConnectFragment extends InstrumentedDialogFragment { Loading src/com/android/settings/vpn2/ConfigDialogFragment.java +3 −6 Original line number Diff line number Diff line Loading @@ -21,10 +21,9 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.security.Credentials; import android.security.KeyStore; Loading Loading @@ -52,9 +51,8 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements private static final String ARG_EDITING = "editing"; private static final String ARG_EXISTS = "exists"; private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private Context mContext; private VpnManager mService; @Override Loading @@ -80,6 +78,7 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements public void onAttach(final Context context) { super.onAttach(context); mContext = context; mService = context.getSystemService(VpnManager.class); } @Override Loading Loading @@ -212,8 +211,6 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements mService.startLegacyVpn(profile); } catch (IllegalStateException e) { Toast.makeText(mContext, R.string.vpn_no_network, Toast.LENGTH_LONG).show(); } catch (RemoteException e) { Log.e(TAG, "Failed to connect", e); } } } Loading src/com/android/settings/vpn2/VpnSettings.java +10 −20 Original line number Diff line number Diff line Loading @@ -30,16 +30,14 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.IConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.VpnManager; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.security.Credentials; Loading Loading @@ -92,10 +90,9 @@ public class VpnSettings extends RestrictedSettingsFragment implements .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .build(); private final IConnectivityManager mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private ConnectivityManager mConnectivityManager; private UserManager mUserManager; private VpnManager mVpnManager; private final KeyStore mKeyStore = KeyStore.getInstance(); Loading Loading @@ -124,6 +121,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mVpnManager = (VpnManager) getSystemService(Context.VPN_MANAGEMENT_SERVICE); mUnavailable = isUiRestricted(); setHasOptionsMenu(!mUnavailable); Loading Loading @@ -467,14 +465,10 @@ public class VpnSettings extends RestrictedSettingsFragment implements @WorkerThread private Map<String, LegacyVpnInfo> getConnectedLegacyVpns() { try { mConnectedLegacyVpn = mConnectivityService.getLegacyVpnInfo(UserHandle.myUserId()); mConnectedLegacyVpn = mVpnManager.getLegacyVpnInfo(UserHandle.myUserId()); if (mConnectedLegacyVpn != null) { return Collections.singletonMap(mConnectedLegacyVpn.key, mConnectedLegacyVpn); } } catch (RemoteException e) { Log.e(LOG_TAG, "Failure updating VPN list with connected legacy VPNs", e); } return Collections.emptyMap(); } Loading @@ -482,16 +476,12 @@ public class VpnSettings extends RestrictedSettingsFragment implements private Set<AppVpnInfo> getConnectedAppVpns() { // Mark connected third-party services Set<AppVpnInfo> connections = new ArraySet<>(); try { for (UserHandle profile : mUserManager.getUserProfiles()) { VpnConfig config = mConnectivityService.getVpnConfig(profile.getIdentifier()); VpnConfig config = mVpnManager.getVpnConfig(profile.getIdentifier()); if (config != null && !config.legacy) { connections.add(new AppVpnInfo(profile.getIdentifier(), config.user)); } } } catch (RemoteException e) { Log.e(LOG_TAG, "Failure updating VPN list with connected app VPNs", e); } return connections; } Loading Loading
src/com/android/settings/network/VpnPreferenceController.java +14 −24 Original line number Diff line number Diff line Loading @@ -19,12 +19,10 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.RemoteException; import android.os.ServiceManager; import android.net.VpnManager; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; Loading Loading @@ -64,7 +62,7 @@ public class VpnPreferenceController extends AbstractPreferenceController private final String mToggleable; private final UserManager mUserManager; private final ConnectivityManager mConnectivityManager; private final IConnectivityManager mConnectivityManagerService; private final VpnManager mVpnManager; private Preference mPreference; public VpnPreferenceController(Context context) { Loading @@ -74,8 +72,7 @@ public class VpnPreferenceController extends AbstractPreferenceController mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); mConnectivityManagerService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mVpnManager = context.getSystemService(VpnManager.class); } @Override Loading Loading @@ -122,28 +119,21 @@ public class VpnPreferenceController extends AbstractPreferenceController } // Copied from SystemUI::SecurityControllerImpl SparseArray<VpnConfig> vpns = new SparseArray<>(); try { final List<UserInfo> users = mUserManager.getUsers(); for (UserInfo user : users) { VpnConfig cfg = mConnectivityManagerService.getVpnConfig(user.id); VpnConfig cfg = mVpnManager.getVpnConfig(user.id); if (cfg == null) { continue; } else if (cfg.legacy) { // Legacy VPNs should do nothing if the network is disconnected. Third-party // VPN warnings need to continue as traffic can still go to the app. final LegacyVpnInfo legacyVpn = mConnectivityManagerService.getLegacyVpnInfo(user.id); final LegacyVpnInfo legacyVpn = mVpnManager.getLegacyVpnInfo(user.id); if (legacyVpn == null || legacyVpn.state != LegacyVpnInfo.STATE_CONNECTED) { continue; } } vpns.put(user.id, cfg); } } catch (RemoteException rme) { // Roll back to previous state Log.e(TAG, "Unable to list active VPNs", rme); return; } final UserInfo userInfo = mUserManager.getUserInfo(UserHandle.myUserId()); final int uid; if (userInfo.isRestricted()) { Loading
src/com/android/settings/vpn2/AppDialogFragment.java +12 −24 Original line number Diff line number Diff line Loading @@ -18,17 +18,13 @@ package com.android.settings.vpn2; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageInfo; import android.net.IConnectivityManager; import android.net.ConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; Loading @@ -52,9 +48,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App private PackageInfo mPackageInfo; private Listener mListener; private ConnectivityManager mConnectivityManager; private UserManager mUserManager; private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private VpnManager mVpnManager; @Override public int getMetricsCategory() { Loading Loading @@ -97,7 +93,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mConnectivityManager = getContext().getSystemService(ConnectivityManager.class); mUserManager = UserManager.get(getContext()); mVpnManager = getContext().getSystemService(VpnManager.class); } @Override Loading Loading @@ -145,14 +143,9 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App return; } final int userId = getUserId(); try { mService.setVpnPackageAuthorization( mVpnManager.setVpnPackageAuthorization( mPackageInfo.packageName, userId, VpnManager.TYPE_VPN_NONE); onDisconnect(dialog); } catch (RemoteException e) { Log.e(TAG, "Failed to forget authorization of " + mPackageInfo.packageName + " for user " + userId, e); } if (mListener != null) { mListener.onForget(); Loading @@ -164,15 +157,10 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App return; } final int userId = getUserId(); try { if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mService, userId))) { mService.setAlwaysOnVpnPackage(userId, null, /* lockdownEnabled */ false, /* lockdownWhitelist */ null); mService.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId); } } catch (RemoteException e) { Log.e(TAG, "Failed to disconnect package " + mPackageInfo.packageName + " for user " + userId, e); if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mVpnManager, userId))) { mConnectivityManager.setAlwaysOnVpnPackageForUser(userId, null, /* lockdownEnabled */ false, /* lockdownAllowlist */ null); mVpnManager.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId); } } Loading
src/com/android/settings/vpn2/AppManagementFragment.java +5 −13 Original line number Diff line number Diff line Loading @@ -29,10 +29,8 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; Loading Loading @@ -72,7 +70,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment private PackageManager mPackageManager; private DevicePolicyManager mDevicePolicyManager; private ConnectivityManager mConnectivityManager; private IConnectivityManager mConnectivityService; private VpnManager mVpnManager; // VPN app info private final int mUserId = UserHandle.myUserId(); Loading Loading @@ -125,8 +123,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment mPackageManager = getContext().getPackageManager(); mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class); mConnectivityManager = getContext().getSystemService(ConnectivityManager.class); mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mVpnManager = getContext().getSystemService(VpnManager.class); mPreferenceVersion = findPreference(KEY_VERSION); mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN); Loading Loading @@ -335,13 +332,8 @@ public class AppManagementFragment extends SettingsPreferenceFragment * @return {@code true} if another VPN (VpnService or legacy) is connected or set as always-on. */ private boolean isAnotherVpnActive() { try { final VpnConfig config = mConnectivityService.getVpnConfig(mUserId); final VpnConfig config = mVpnManager.getVpnConfig(mUserId); return config != null && !TextUtils.equals(config.user, mPackageName); } catch (RemoteException e) { Log.w(TAG, "Failure to look up active VPN", e); return false; } } public static class CannotConnectFragment extends InstrumentedDialogFragment { Loading
src/com/android/settings/vpn2/ConfigDialogFragment.java +3 −6 Original line number Diff line number Diff line Loading @@ -21,10 +21,9 @@ import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.VpnManager; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.security.Credentials; import android.security.KeyStore; Loading Loading @@ -52,9 +51,8 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements private static final String ARG_EDITING = "editing"; private static final String ARG_EXISTS = "exists"; private final IConnectivityManager mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private Context mContext; private VpnManager mService; @Override Loading @@ -80,6 +78,7 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements public void onAttach(final Context context) { super.onAttach(context); mContext = context; mService = context.getSystemService(VpnManager.class); } @Override Loading Loading @@ -212,8 +211,6 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements mService.startLegacyVpn(profile); } catch (IllegalStateException e) { Toast.makeText(mContext, R.string.vpn_no_network, Toast.LENGTH_LONG).show(); } catch (RemoteException e) { Log.e(TAG, "Failed to connect", e); } } } Loading
src/com/android/settings/vpn2/VpnSettings.java +10 −20 Original line number Diff line number Diff line Loading @@ -30,16 +30,14 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.IConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.VpnManager; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.security.Credentials; Loading Loading @@ -92,10 +90,9 @@ public class VpnSettings extends RestrictedSettingsFragment implements .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .build(); private final IConnectivityManager mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); private ConnectivityManager mConnectivityManager; private UserManager mUserManager; private VpnManager mVpnManager; private final KeyStore mKeyStore = KeyStore.getInstance(); Loading Loading @@ -124,6 +121,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements mUserManager = (UserManager) getSystemService(Context.USER_SERVICE); mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mVpnManager = (VpnManager) getSystemService(Context.VPN_MANAGEMENT_SERVICE); mUnavailable = isUiRestricted(); setHasOptionsMenu(!mUnavailable); Loading Loading @@ -467,14 +465,10 @@ public class VpnSettings extends RestrictedSettingsFragment implements @WorkerThread private Map<String, LegacyVpnInfo> getConnectedLegacyVpns() { try { mConnectedLegacyVpn = mConnectivityService.getLegacyVpnInfo(UserHandle.myUserId()); mConnectedLegacyVpn = mVpnManager.getLegacyVpnInfo(UserHandle.myUserId()); if (mConnectedLegacyVpn != null) { return Collections.singletonMap(mConnectedLegacyVpn.key, mConnectedLegacyVpn); } } catch (RemoteException e) { Log.e(LOG_TAG, "Failure updating VPN list with connected legacy VPNs", e); } return Collections.emptyMap(); } Loading @@ -482,16 +476,12 @@ public class VpnSettings extends RestrictedSettingsFragment implements private Set<AppVpnInfo> getConnectedAppVpns() { // Mark connected third-party services Set<AppVpnInfo> connections = new ArraySet<>(); try { for (UserHandle profile : mUserManager.getUserProfiles()) { VpnConfig config = mConnectivityService.getVpnConfig(profile.getIdentifier()); VpnConfig config = mVpnManager.getVpnConfig(profile.getIdentifier()); if (config != null && !config.legacy) { connections.add(new AppVpnInfo(profile.getIdentifier(), config.user)); } } } catch (RemoteException e) { Log.e(LOG_TAG, "Failure updating VPN list with connected app VPNs", e); } return connections; } Loading