Reputation: 685
I have some HTML text inputs into a WebView, and I need to disable the autosuggetions on these inputs from Android, not from HTML (autocomplete=off).
How can I do this?
Upvotes: 23
Views: 16610
Reputation: 465
In Android 8 and above, you should set importance of a textview subclass for system auto-fill feature:
android:importantForAutofill="noExcludeDescendants"
Official reference: Optimize your app for autofill
Furthermore, You might try to delete the "Web Data" sqlite file in data/data/{your-app-package}/app_webview when webview isn't in use for security's sake.
Upvotes: 0
Reputation: 28835
A solution of @lpsun in 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
}
}
Upvotes: 2
Reputation: 147
None of the above helped so after extensive search i found this which works perfect on webview as well as normal websites. Text area can be replaced by Input text fields too :)
<textarea class="form-control" id="comments" autocomplete="off" autocorrect="off" spellcheck="false"></textarea>
Upvotes: 2
Reputation: 2946
If it already has the form data then setSaveFormData(false)
won't stop it from using it. To clear the database you may have to do the following:
WebViewDatabase.getInstance(this).clearFormData();
Upvotes: 1
Reputation: 277
The suggested above answers didn't help me. So I found next solution: I just created a simple wrapper for WebView and used it.
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;
}
}
Upvotes: 17
Reputation: 757
I couldn't do this from Android's side, however in adding to the webview's text input spellcheck="false" did the trick.
<textarea spellcheck="false"></textarea>
Upvotes: 0
Reputation: 5522
In addition to setSaveFormData setting as False, this also helped me
WebView.getSettings().setSavePassword(false);
WebView.clearFormData();
Upvotes: 5
Reputation: 2370
This problem vexed me for quite a while but the solution is very simple:
webview.getSettings().setSaveFormData(false);
I wrote about it here:
http://roysutton.com/2012/02/21/preventing-auto-fill-in-android-webview/
Upvotes: 32