From c33913fb2ef1d6518f3d47a2b6f3e0a6eebe564d Mon Sep 17 00:00:00 2001 From: Asger Hautop Drewsen Date: Fri, 8 Sep 2023 09:55:51 +0200 Subject: [PATCH] Add method to disable autosuggestion --- .../com/getcapacitor/CapacitorWebView.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/android/capacitor/src/main/java/com/getcapacitor/CapacitorWebView.java b/android/capacitor/src/main/java/com/getcapacitor/CapacitorWebView.java index 22f6f9729..d30529b7a 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/CapacitorWebView.java +++ b/android/capacitor/src/main/java/com/getcapacitor/CapacitorWebView.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.Build; +import android.text.InputType; import android.util.AttributeSet; import android.util.TypedValue; import android.view.KeyEvent; @@ -17,6 +18,7 @@ public class CapacitorWebView extends WebView { private BaseInputConnection capInputConnection; private Bridge bridge; + private boolean autosuggestionEnabled = true; public CapacitorWebView(Context context, AttributeSet attrs) { super(context, attrs); @@ -26,6 +28,10 @@ public void setBridge(Bridge bridge) { this.bridge = bridge; } + public void setAutosuggestionEnabled(boolean enabled) { + autosuggestionEnabled = enabled; + } + @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { CapConfig config; @@ -36,13 +42,23 @@ public InputConnection onCreateInputConnection(EditorInfo outAttrs) { } boolean captureInput = config.isInputCaptured(); + InputConnection inputConnection; if (captureInput) { if (capInputConnection == null) { capInputConnection = new BaseInputConnection(this, false); } - return capInputConnection; + inputConnection = capInputConnection; + } else { + inputConnection = super.onCreateInputConnection(outAttrs); } - return super.onCreateInputConnection(outAttrs); + + if (!autosuggestionEnabled) { + // See https://stackoverflow.com/a/28009054/640584 + outAttrs.inputType &= ~EditorInfo.TYPE_MASK_VARIATION; + outAttrs.inputType |= InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD; + } + + return inputConnection; } @Override