diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java index cd5504ac9..d91898b36 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java @@ -58,6 +58,7 @@ import org.strongswan.android.ui.VpnProfileListFragment.OnVpnProfileSelectedList import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class MainActivity extends AppCompatActivity implements OnVpnProfileSelectedListener { @@ -341,14 +342,30 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec */ private void startVpnProfile(Intent intent, boolean foreground) { - long profileId = intent.getLongExtra(EXTRA_VPN_PROFILE_ID, 0); - if (profileId <= 0) - { /* invalid invocation */ - return; - } + VpnProfile profile = null; + VpnProfileDataSource dataSource = new VpnProfileDataSource(this); dataSource.open(); - VpnProfile profile = dataSource.getVpnProfile(profileId); + String profileUUID = intent.getStringExtra(EXTRA_VPN_PROFILE_ID); + if (profileUUID != null) + { + try + { + profile = dataSource.getVpnProfile(UUID.fromString(profileUUID)); + } + catch (Exception e) + { /* invalid UUID */ + e.printStackTrace(); + } + } + else + { + long profileId = intent.getLongExtra(EXTRA_VPN_PROFILE_ID, 0); + if (profileId > 0) + { + profile = dataSource.getVpnProfile(profileId); + } + } dataSource.close(); if (profile != null)