diff --git a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/MethodResultWrapper.java b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/MethodResultWrapper.java index 3bc513c..30f3a97 100644 --- a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/MethodResultWrapper.java +++ b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/MethodResultWrapper.java @@ -9,14 +9,26 @@ public class MethodResultWrapper implements MethodChannel.Result { private final MethodChannel.Result methodResult; private final Handler handler; + private boolean called; MethodResultWrapper(MethodChannel.Result result) { methodResult = result; handler = new Handler(Looper.getMainLooper()); } + private synchronized boolean checkNotCalled() { + if (called) { + return false; + } + called = true; + return true; + } + @Override public void success(final Object result) { + if (!checkNotCalled()) { + return; + } handler.post( new Runnable() { @Override @@ -33,6 +45,9 @@ public void run() { @Override public void error( final String errorCode, final String errorMessage, final Object errorDetails) { + if (!checkNotCalled()) { + return; + } handler.post( new Runnable() { @Override @@ -48,6 +63,9 @@ public void run() { @Override public void notImplemented() { + if (!checkNotCalled()) { + return; + } handler.post( new Runnable() { @Override