diff options
Diffstat (limited to 'core/java/android/net/VpnService.java')
| -rw-r--r-- | core/java/android/net/VpnService.java | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/core/java/android/net/VpnService.java b/core/java/android/net/VpnService.java index 4b79cbb98d8c..7fb0c47598c8 100644 --- a/core/java/android/net/VpnService.java +++ b/core/java/android/net/VpnService.java @@ -28,8 +28,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; -import android.net.Network; -import android.net.NetworkUtils; import android.os.Binder; import android.os.IBinder; import android.os.Parcel; @@ -131,6 +129,35 @@ public class VpnService extends Service { public static final String SERVICE_INTERFACE = VpnConfig.SERVICE_INTERFACE; /** + * Key for boolean meta-data field indicating whether this VpnService supports always-on mode. + * + * <p>For a VPN app targeting {@link android.os.Build.VERSION_CODES#N API 24} or above, Android + * provides users with the ability to set it as always-on, so that VPN connection is + * persisted after device reboot and app upgrade. Always-on VPN can also be enabled by device + * owner and profile owner apps through + * {@link android.app.admin.DevicePolicyManager#setAlwaysOnVpnPackage}. + * + * <p>VPN apps not supporting this feature should opt out by adding this meta-data field to the + * {@code VpnService} component of {@code AndroidManifest.xml}. In case there is more than one + * {@code VpnService} component defined in {@code AndroidManifest.xml}, opting out any one of + * them will opt out the entire app. For example, + * <pre> {@code + * <service android:name=".ExampleVpnService" + * android:permission="android.permission.BIND_VPN_SERVICE"> + * <intent-filter> + * <action android:name="android.net.VpnService"/> + * </intent-filter> + * <meta-data android:name="android.net.VpnService.SUPPORTS_ALWAYS_ON" + * android:value=false/> + * </service> + * } </pre> + * + * <p>This meta-data field defaults to {@code true} if absent. + */ + public static final String METADATA_SUPPORTS_ALWAYS_ON = + "android.net.VpnService.SUPPORTS_ALWAYS_ON"; + + /** * Use IConnectivityManager since those methods are hidden and not * available in ConnectivityManager. */ |
