Android O has the feature to support Auto-filling for fields. Is there any way I can disable it for a specific application. That is I want to force my application not to use the auto-fill service.
Is it possible ?
To block autofill for an entire activity, use this in onCreate() of the activity:
getWindow()
.getDecorView()
.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
Is there any better method than this ?
Not that I am aware of. Certainly, nothing is documented.
Not that I am aware of.
In my case, our app targets sdk version 21 but newer devices (26+) were still popping up the autocomplete. Pretty big problem if the app runs on devices that are shared between people. Using just
android:importantForAutofill="no"
did not work for me.The only solution that I found to work in my case was:
The reason I added
android:autofillHints="AUTOFILL_HINT_SMS_OTP"
was because if you long pressed on the EditText it would still bring up autofill. Basically I told the field's autofill that it is waiting for a text message that will never be sent. Bit of a hack, I know...Note: you may have to add
xmlns:tools="http://schemas.android.com/tools"
to your schemas' if it is not there already.I ran into this too. It turns out the issue was caused by setting the hint text on the EditText nested inside the TextInputLayout.
I did some digging and found this nugget in the 26.0.0 Beta 2 release notes. Andorid Support Release Notes June 2017
That led me to try setting the hint on the TextInputLayout instead of the nested EditText.
This resolved the crashing issue for me. Example:
Currently there is no direct way to disable the autofill for an entire application, since the autofill feature is View specific.
You can still try this way and call BaseActivity everywhere.
You can also force request autofill this way.
Note: At the moment autofill feature is only available in API 26 Android Oreo 8.0
Hope this helps!
Had the same problem with API 28+ and disable Autofill. For me the only solution was to disable long click for my views.
In your EditText attributes add
android:importantForAutofill="no"
This should be a temporary fix and will only apply to api 26+