summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java b/app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java
new file mode 100644
index 00000000..df1d3e5a
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/base/OnBootReceiver.java
@@ -0,0 +1,54 @@
+package se.leap.bitmaskclient.base;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+
+import de.blinkt.openvpn.core.VpnStatus;
+
+import static android.content.Intent.ACTION_BOOT_COMPLETED;
+import static se.leap.bitmaskclient.base.models.Constants.APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE;
+import static se.leap.bitmaskclient.base.models.Constants.EIP_RESTART_ON_BOOT;
+import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_VPN_CERTIFICATE;
+import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
+
+public class OnBootReceiver extends BroadcastReceiver {
+
+ SharedPreferences preferences;
+
+ // Debug: am broadcast -a android.intent.action.BOOT_COMPLETED
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ //Lint complains if we're not checking the intent action
+ if (intent == null || !ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+ return;
+ }
+ preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
+ boolean providerConfigured = !preferences.getString(PROVIDER_VPN_CERTIFICATE, "").isEmpty();
+ boolean startOnBoot = preferences.getBoolean(EIP_RESTART_ON_BOOT, false);
+ boolean isAlwaysOnConfigured = VpnStatus.isAlwaysOn();
+ Log.d("OpenVPN", "OpenVPN onBoot intent received. Provider configured? " + providerConfigured + " Start on boot? " + startOnBoot + " isAlwaysOn feature configured: " + isAlwaysOnConfigured);
+ if (providerConfigured) {
+ if (isAlwaysOnConfigured) {
+ //exit because the app is already setting up the vpn
+ return;
+ }
+ if (startOnBoot) {
+ Log.d("OpenVpn", "start StartActivity!");
+ Intent startActivityIntent = new Intent(context.getApplicationContext(), StartActivity.class);
+ startActivityIntent.putExtra(EIP_RESTART_ON_BOOT, true);
+ startActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(startActivityIntent);
+ }
+ } else {
+ if (isAlwaysOnConfigured) {
+ Intent dashboardIntent = new Intent(context.getApplicationContext(), StartActivity.class);
+ dashboardIntent.putExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE, true);
+ dashboardIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(dashboardIntent);
+ }
+ }
+ }
+}