Deshabilitar el servicio de autocompletado de Android O para una aplicación

Android O tiene la función para admitir llenado automático de campos. ¿Hay alguna manera de desactivarlo para una aplicación específica? Es decir, quiero forzar a mi aplicación a que no use el servicio de autocompletar.

Es posible ?

Para bloquear el autocompletado de toda una actividad, use esto en onCreate () de la actividad:

getWindow() .getDecorView() .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); 

¿Hay algún método mejor que esto?

Es posible ?

No que yo sepa. Ciertamente, nada está documentado.

¿Hay algún método mejor que esto?

No que yo sepa.

Actualmente no hay una forma directa de desactivar el autocompletar para una aplicación completa, ya que la función de autocompletar es específica de la vista.

Todavía puede intentarlo de esta manera y llamar a BaseActivity en todas partes .

 public class BaseActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); disableAutoFill(); } @TargetApi(Build.VERSION_CODES.O) private void disableAutoFill() { getWindow().getDecorView().setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); } } 

También puede forzar la solicitud de autocompletar de esta manera.

 public void forceAutofill() { AutofillManager afm = context.getSystemService(AutofillManager.class); if (afm != null) { afm.requestAutofill(); } } 

Nota: en este momento, la función de autocompletar solo está disponible en API 26 Android Oreo 8.0

¡Espero que esto ayude!

Creo que la respuesta aceptada es incorrecta:

Así que tengo mi propia clase que extiende el android.support.v7.widget.AppCompatEditText y todo lo que hice fue sobreescribir el siguiente método con el siguiente valor:

 @Override public int getAutofillType() { return AUTOFILL_TYPE_NONE; } 

ninguna otra solución funcionó, ni siquiera Android: importantForAutofill = “no”.

getAutofillType () proviene de la clase View, por lo que debería funcionar para cualquier otra clase, como TextInputEditText.

Me encontré con esto también. Resulta que el problema fue causado por la configuración del texto de sugerencia en EditText nested dentro de TextInputLayout.

Hice algunas excavaciones y encontré esta pepita en las notas de la versión 26.0.0 Beta 2. Notas de la versión de asistencia de Andorid Junio ​​de 2017

TextInputLayout debe establecer sugerencias en onProvideAutofillStructure ()

Eso me llevó a intentar establecer la sugerencia en TextInputLayout en lugar de EditText nested.

Esto resolvió el problema de locking para mí. Ejemplo:

     

Parece ser un error que debe corregirse: https://issuetracker.google.com/issues/67675432
Mientras tanto, una solución por ahora es desactivar la función Autocompletar para todo el proyecto. Puede agregar en el archivo values-v26/styles.xml el siguiente estilo o puede editar su BaseEditTextStyle si está usando un estilo específico para sus vistas de EditText.

  

y en el archivo values-v26/themes.xml puede simplemente agregar al tema predeterminado que está usando en su aplicación los elementos editTextStyle y android:editTextStyle como los siguientes:

  

De esta manera puede aplicar estos cambios para todos sus EditTexts sin necesidad de cambiar sus archivos de diseño o Actividades (y más adelante puede eliminarlos fácilmente cuando se solucione el error).

Crea un estilo personalizado de EditText y establece android:importantForAutofill en no .

  

Luego, en tu tema de actividad establece este estilo para editTextStyle.

 @style/EditTextStyleWithoutAutoFill 

Con referencia al rastreador de problemas de Google , se ha corregido.

Esto está arreglado en Android 8.1

Si algún problema persiste, informe en el rastreador de problemas de Google que volverán a abrir para examinar.

En sus atributos EditText, agregue android:importantForAutofill="no" Esto debería ser una solución temporal y solo se aplicará a api 26+