關閉 Capacitorjs Webview Android Autosuggestion

最近我們在進行開發工作時,遇到了一個有趣的問題。我們正在嘗試將 Web 專案使用 Capacitorjs 打包成 Android App,但在登入頁面輸入帳號密碼時,Gboard 鍵盤竟然會給出下一個字的提示,這實在是有點令人意外。 雖然這本來不算什麼大問題,但在提交資安審查時,審查人員強調鍵盤不能有任何提示,這讓我們的專案陷入了一個有趣的境地。 起初我們試圖使用 HTML input 元素的 disabled 屬性來禁用鍵盤提示,但效果並不如預期。因此,我們開始對 Capacitor 的打包機制進行深入研究,希望找到更靈活、專業的解決辦法。 // 這樣是沒有用的 <input type="text" autocomplete="false" autocomplete="off"> 正因為我們打包成 Android App 後的畫面是由 Webview 元件在渲染網頁,所以我們的解決方案主要朝這個目標著手。 修改 修改方式如下 (以下com/example/app需要依照你的app去替換名稱) 在 android/app/src/main/java/com/example/app 下面建立一個檔案 NoSuggestionsWebView.java 在裡面加入 package com.example.app; import android.content.Context; import android.text.InputType; import android.util.AttributeSet; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import com.getcapacitor.CapacitorWebView; public class NoSuggestionsWebView extends CapacitorWebView { public NoSuggestionsWebView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection ic = super....

July 22, 2023 · 1 min