From f8d19823ea9be0c8700a69a215fac7d3af4d6d87 Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Tue, 4 Oct 2022 08:34:34 +0200 Subject: 5561: display name of other VPNrunning always on. --- .../java/android/net/IConnectivityManager.java | 6 ++-- .../src/main/java/android/net/VpnManager.java | 11 +++++++ permissionse/src/main/AndroidManifest.xml | 2 ++ .../permissions/PermissionsPrivacyModule.kt | 35 ++++++++++++++++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) (limited to 'permissionse') diff --git a/permissionse/libs/hidden-apis-stub/src/main/java/android/net/IConnectivityManager.java b/permissionse/libs/hidden-apis-stub/src/main/java/android/net/IConnectivityManager.java index d7f6ccf..53440e0 100644 --- a/permissionse/libs/hidden-apis-stub/src/main/java/android/net/IConnectivityManager.java +++ b/permissionse/libs/hidden-apis-stub/src/main/java/android/net/IConnectivityManager.java @@ -32,7 +32,7 @@ public interface IConnectivityManager { @TargetApi(29) @DeprecatedSinceApi( api = 31, - message = "TODO" + message = "Moved to android.net.VpnManager" ) boolean prepareVpn(String oldPackage, String newPackage, int userId) throws RemoteException; @@ -53,9 +53,9 @@ public interface IConnectivityManager { @TargetApi(29) @DeprecatedSinceApi( api = 31, - message = "TODO" + message = "Moved to android.net.VpnManager" ) - String getAlwaysOnVpnPackage(int userId) throws RemoteException; + public String getAlwaysOnVpnPackage(int userId) throws RemoteException; public abstract static class Stub extends Binder implements IConnectivityManager { public static IConnectivityManager asInterface(IBinder obj) { diff --git a/permissionse/libs/hidden-apis-stub/src/main/java/android/net/VpnManager.java b/permissionse/libs/hidden-apis-stub/src/main/java/android/net/VpnManager.java index 7cc9b6a..bdb9e95 100644 --- a/permissionse/libs/hidden-apis-stub/src/main/java/android/net/VpnManager.java +++ b/permissionse/libs/hidden-apis-stub/src/main/java/android/net/VpnManager.java @@ -21,6 +21,7 @@ import android.annotation.TargetApi; import androidx.annotation.DeprecatedSinceApi; import androidx.annotation.Nullable; +import androidx.annotation.RequiresPermission; // Stub based on: // https://gitlab.e.foundation/e/os/android_frameworks_base/-/blob/[SDK_VERSION]/core/java/android/net/VpnManager.java @@ -50,4 +51,14 @@ public class VpnManager { int userId, int vpnType ) {} + + @TargetApi(31) + @DeprecatedSinceApi( + api = 33, + message = "Check disponibility in SDK33" + ) + @RequiresPermission("android.permission.CONTROL_ALWAYS_ON_VPN") + public String getAlwaysOnVpnPackageForUser(int userId) { + return null; + } } diff --git a/permissionse/src/main/AndroidManifest.xml b/permissionse/src/main/AndroidManifest.xml index 6a7e416..428a612 100644 --- a/permissionse/src/main/AndroidManifest.xml +++ b/permissionse/src/main/AndroidManifest.xml @@ -33,4 +33,6 @@ /> + diff --git a/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt b/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt index fe5b7ac..22be90d 100644 --- a/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt +++ b/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt @@ -136,4 +136,39 @@ class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(cont } return false } + + override fun getAlwaysOnVpnPackage(): String? { + return when(Build.VERSION.SDK_INT) { + 29, 30 -> getAlwaysOnVpnPackageSDK29() + 31, 32 -> getAlwaysOnVpnPackageSDK32() + else -> { + Log.e("Permissions-e", "Bad android sdk version") + null + } + } + } + + @TargetApi(29) + private fun getAlwaysOnVpnPackageSDK29(): String? { + val service: IConnectivityManager = IConnectivityManager.Stub.asInterface( + ServiceManager.getService(Context.CONNECTIVITY_SERVICE)) + + return try { + service.getAlwaysOnVpnPackage(UserHandle.myUserId()) + } catch(e: java.lang.Exception) { + Log.e("Permissions-e", "Bad android sdk version ", e) + return null + } + } + + @TargetApi(31) + private fun getAlwaysOnVpnPackageSDK32(): String? { + val vpnManager = context.getSystemService(Context.VPN_MANAGEMENT_SERVICE) as VpnManager + return try { + vpnManager.getAlwaysOnVpnPackageForUser(UserHandle.myUserId()) + } catch(e: java.lang.Exception) { + Log.e("Permissions-e", "Bad android sdk version ", e) + return null + } + } } -- cgit v1.2.1