14- Android keyboard cache issues
Esto sería semejante al autocompletado de los formularios en las páginas web.
Qué es el keyboard cache: los teclados de Android (Gboard, SwiftKey, etc.) tienen un motor de sugerencias/autocorrección que aprende y cachea lo que el usuario escribe, para ofrecer predicciones futuras. Este cache persiste fuera del control de la app — vive en el almacenamiento propio del IME (Input Method Editor), no en el sandbox de la app.
El problema es no configurar bien los formularios de input de contraseñas e info sensible ya que los teclados podrían:
- Guardar palabras/fragmentos tipeados en su diccionario personal.
- Ofrecerlos como sugerencia en OTRO campo, en OTRA app, más adelante — un password real podría aparecer como sugerencia de autocompletado en un chat de WhatsApp, por ejemplo.
- Persistir en el propio storage del teclado, potencialmente legible por quien tenga acceso al dispositivo (backup, forense, malware con acceso al IME).
SI nos vamos a /res/layout y por ejemplo, vemos que se está usando android:password="true" que está obsoleto:
<EditText
android:textColorHint="#cccccc"
android:id="@+id/loginscreen_password"
android:background="@android:drawable/editbox_background"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Password"
android:password="true"
android:drawableLeft="@android:drawable/ic_lock_lock"
android:layout_weight="1"/>La forma correcta sería
android:inputType="textPassword"Además en activity_change_password.xml lo mismo
<EditText
android:textSize="20sp"
android:textColorHint="#cccccc"
android:id="@+id/editText_newPassword"
android:background="@android:drawable/editbox_background"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="New Password"
android:password="true"
android:drawableLeft="@android:drawable/ic_lock_lock"
android:layout_weight="1"/>En activity_do_transfer.xml tendríamos para editText_amount, editText_Phone lo mismo pero sin inputType en absoluto.