android - positiva - autosugestion sinonimo
¿Deshabilitando la autosugestión en WebView? (7)
Tengo algunas entradas de texto HTML en una vista web, y necesito deshabilitar las autoasignaciones en estas entradas desde Android, no desde HTML (autocompletar = desactivado).
¿Cómo puedo hacer esto?
Además de la configuración de setSaveFormData como False, esto también me ayudó
WebView.getSettings().setSavePassword(false);
WebView.clearFormData();
Este problema me molestó durante bastante tiempo, pero la solución es muy simple:
webview.getSettings().setSaveFormData(false);
Escribí sobre esto aquí:
http://roysutton.com/2012/02/21/preventing-auto-fill-in-android-webview/
Las respuestas sugeridas arriba no me ayudaron. Así que encontré la siguiente solución: acabo de crear un envoltorio simple para WebView y lo utilicé.
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;
}
}
Nada de lo anterior ayudó, así que, después de una búsqueda exhaustiva, encontré que funciona perfectamente tanto en webview como en sitios web normales. El área de texto también se puede reemplazar por campos de texto de entrada :)
<textarea class="form-control" id="comments" autocomplete="off" autocorrect="off" spellcheck="false"></textarea>
No pude hacer esto desde el lado de Android, sin embargo, al agregar la entrada de texto de webview, spellcheck = "false" funcionó.
<textarea spellcheck="false"></textarea>
Si ya tiene los datos del formulario, setSaveFormData(false)
no impedirá que lo use. Para borrar la base de datos es posible que tenga que hacer lo siguiente:
WebViewDatabase.getInstance(this).clearFormData();
Una solución de @lpsun en Kotlin.
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
}
}