summaryrefslogtreecommitdiffhomepage
path: root/app/src/main/java/com/wireguard/android/Application.java
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-03-08 16:46:07 +0800
committerJason A. Donenfeld <Jason@zx2c4.com>2020-03-09 00:19:42 +0800
commit4905185e6121471f8c15d4ac59623323284135e5 (patch)
treebbbaa47a67158eef6dabfb6a9ed59cafe4b94d40 /app/src/main/java/com/wireguard/android/Application.java
parent09904305136adec00fae06f84e299b2df9a580c9 (diff)
backend: do not depend on anything except config
This is likely broken but should make for a good starting point. It also should hopefully handle stopping tunnels before starting new ones, in the case of the GoBackend. Again, untested. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'app/src/main/java/com/wireguard/android/Application.java')
-rw-r--r--app/src/main/java/com/wireguard/android/Application.java15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/src/main/java/com/wireguard/android/Application.java b/app/src/main/java/com/wireguard/android/Application.java
index 9b40fcd6..0fd00874 100644
--- a/app/src/main/java/com/wireguard/android/Application.java
+++ b/app/src/main/java/com/wireguard/android/Application.java
@@ -5,6 +5,7 @@
package com.wireguard.android;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -19,12 +20,14 @@ import androidx.preference.PreferenceManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDelegate;
+import com.wireguard.android.activity.MainActivity;
import com.wireguard.android.backend.Backend;
import com.wireguard.android.backend.GoBackend;
import com.wireguard.android.backend.WgQuickBackend;
import com.wireguard.android.configStore.FileConfigStore;
import com.wireguard.android.model.TunnelManager;
import com.wireguard.android.util.AsyncWorker;
+import com.wireguard.android.util.ExceptionLoggers;
import com.wireguard.android.util.ModuleLoader;
import com.wireguard.android.util.RootShell;
import com.wireguard.android.util.ToolsInstaller;
@@ -89,8 +92,16 @@ public class Application extends android.app.Application {
} catch (final Exception ignored) {
}
}
- if (backend == null)
- backend = new GoBackend(app.getApplicationContext());
+ if (backend == null) {
+ final Context context = app.getApplicationContext();
+ final Intent configureIntent = new Intent(context, MainActivity.class);
+ configureIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ final PendingIntent pendingConfigureIntent = PendingIntent.getActivity(context, 0, configureIntent, 0);
+ backend = new GoBackend(context, pendingConfigureIntent);
+ GoBackend.setAlwaysOnCallback(() -> {
+ get().tunnelManager.restoreState(true).whenComplete(ExceptionLoggers.D);
+ });
+ }
app.backend = backend;
}
return app.backend;