Отключить автоматическое предложение в WebView? - PullRequest
18 голосов
/ 13 сентября 2011

У меня есть некоторые текстовые вводы HTML в WebView, и мне нужно отключить автоматические предложения для этих входов из Android, а не из HTML (autocomplete = off).

Как я могу это сделать?

Ответы [ 7 ]

29 голосов
/ 21 февраля 2012

Эта проблема меня давно раздражала, но решение очень простое:

webview.getSettings().setSaveFormData(false);

Я писал об этом здесь:

http://roysutton.com/2012/02/21/preventing-auto-fill-in-android-webview/

13 голосов
/ 18 января 2015

Предложенные выше ответы мне не помогли. Поэтому я нашел следующее решение: я просто создал простую оболочку для WebView и использовал ее.

public class NoSuggestionsWebView extends WebView {
    public NoSuggestionsWebView(Context context) {
        super(context);
    }

    public NoSuggestionsWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NoSuggestionsWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        InputConnection ic = super.onCreateInputConnection(outAttrs);

        outAttrs.inputType &= ~EditorInfo.TYPE_MASK_VARIATION; /* clear VARIATION type to be able to set new value */
        outAttrs.inputType |= InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD; /* WEB_PASSWORD type will prevent form suggestions */

        return ic;
    }
}
5 голосов
/ 23 марта 2012

В дополнение к значению False для SetSaveFormData это также помогло мне

WebView.getSettings().setSavePassword(false);
WebView.clearFormData();
1 голос
/ 04 августа 2018

Ничто из вышеперечисленного не помогло, поэтому после обширного поиска я нашел это, которое отлично работает как на веб-обозрении, так и на обычных веб-сайтах. Текстовую область можно заменить также полями ввода текста:)

<textarea class="form-control" id="comments" autocomplete="off" autocorrect="off"  spellcheck="false"></textarea>
0 голосов
/ 26 марта 2019

Раствор @lpsun в Котлине.

import android.content.Context
import android.text.InputType
import android.util.AttributeSet
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputConnection
import android.webkit.WebView

class NoSuggestionsWebView : WebView {
    constructor(context: Context) : super(context)

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs)

    constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs,
        defStyle)

    override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection? {
        val ic = super.onCreateInputConnection(outAttrs)

        /* clear VARIATION type to be able to set new value */
        outAttrs.inputType = outAttrs.inputType and EditorInfo.TYPE_MASK_VARIATION.inv()
        /* WEB_PASSWORD type will prevent form suggestions */
        outAttrs.inputType = outAttrs.inputType or InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD

        return ic
    }
}
0 голосов
/ 18 декабря 2015

Если у него уже есть данные формы, то setSaveFormData(false) не остановит его использование.Для очистки базы данных вам может потребоваться выполнить следующие действия:

WebViewDatabase.getInstance(this).clearFormData();

0 голосов
/ 03 февраля 2014

Я не мог сделать это со стороны Android, однако, добавив к текстовому вводу веб-просмотра spellcheck = "false", добился цели.

<textarea spellcheck="false"></textarea>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...