diff --git a/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
deleted file mode 100644
index f2c2217e..00000000
--- a/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import android.content.Context;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.platform.app.InstrumentationRegistry;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
-
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.getcapacitor.app", appContext.getPackageName());
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d666f13a..5f41638d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,9 +33,7 @@
-
-
-
diff --git a/app/src/main/java/org/mapcomplete/Databridge.java b/app/src/main/java/org/mapcomplete/Databridge.java
new file mode 100644
index 00000000..db12b97b
--- /dev/null
+++ b/app/src/main/java/org/mapcomplete/Databridge.java
@@ -0,0 +1,51 @@
+package org.mapcomplete;
+
+
+import android.util.Log;
+
+import com.getcapacitor.JSObject;
+import com.getcapacitor.Plugin;
+import com.getcapacitor.PluginCall;
+import com.getcapacitor.PluginMethod;
+import com.getcapacitor.annotation.CapacitorPlugin;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+@CapacitorPlugin(name = "Echo")
+public class Databridge extends Plugin {
+
+ private final Map> responders;
+
+ private static Consumer answer(String answer) {
+ JSObject ret = new JSObject();
+ ret.put("value", answer);
+ Log.i("databridge","Resolving call");
+ return (PluginCall call) -> call.resolve(ret);
+ }
+
+ /**
+ * A responder will be activated if the native code asks for it.
+ * Use call.setKeepAlive(true) for multiple responses
+ * @param responders
+ */
+ public Databridge(Map> responders) {
+ this.responders = responders;
+ responders.put("meta", Databridge.answer("capacitator-shell 0.0.1;"));
+ }
+
+ @PluginMethod()
+ public void request(PluginCall call) {
+ String key = call.getString("key");
+ Log.i("databridge","Got a call: "+key);
+ var c= this.responders.get(key);
+ if(c != null){
+ c.accept(call);
+ }else{
+ call.reject("ERROR: no responder installed for "+key);
+ }
+ }
+}
diff --git a/app/src/main/java/org/mapcomplete/MainActivity.java b/app/src/main/java/org/mapcomplete/MainActivity.java
index bc4b35ea..95433853 100644
--- a/app/src/main/java/org/mapcomplete/MainActivity.java
+++ b/app/src/main/java/org/mapcomplete/MainActivity.java
@@ -1,5 +1,15 @@
package org.mapcomplete;
+import android.os.Bundle;
+
import com.getcapacitor.BridgeActivity;
-public class MainActivity extends BridgeActivity {}
+public class MainActivity extends BridgeActivity {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ registerPlugin(Databridge.class);
+ }
+
+}
diff --git a/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
deleted file mode 100644
index 02973278..00000000
--- a/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
-
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
diff --git a/variables.gradle b/variables.gradle
index 8ef305d0..7785a4ee 100644
--- a/variables.gradle
+++ b/variables.gradle
@@ -1,5 +1,5 @@
ext {
- minSdkVersion = 22
+ minSdkVersion = 24
compileSdkVersion = 34
targetSdkVersion = 34
androidxActivityVersion = '1.8.0'
@@ -13,4 +13,4 @@ ext {
androidxJunitVersion = '1.1.5'
androidxEspressoCoreVersion = '3.5.1'
cordovaAndroidVersion = '10.1.1'
-}
\ No newline at end of file
+}