16: Пропуск сохранения пароля, так как пользователю, скорее всего, будет предложено выполнить автозаполнение Android

#android #android-8.0-oreo #autofill #google-smartlockpasswords

Вопрос:

Я интегрирую google smart lock в свое приложение для Android, но на некоторых устройствах я получаю эту ошибку при попытке сохранить учетные данные в Google. Я использую следующий код для сохранения учетных данных —

  Credential credential = new Credential.Builder(email)
                                       .setPassword(password)
                                       .build();
 saveCredentials(credential);
 

После поиска в Google этого решения выяснилось, что для сохранения пароля необходимо отключить функцию автоматического заполнения в приложении.

Попробуйте 1 — Поместите следующий код в действие для фиксации автозаполнения в определенном действии и отключите автозаполнение. Но это не работает.

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

    AutofillManager autofillManager = getSystemService(AutofillManager.class);
    autofillManager.commit();

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

Попробуйте 2 — Поместите следующее в свойства в EditText

  android:longClickable="false"
 

longClickable должен остановить автозаполнение, но он не работает.

  android:importantForAutofill="no"
 

Также попробуйте, importantForAutoFill но это тоже не работает.

Ответ №1:

Я удалил весь код для ручного сохранения и просто добавил android:autofillHints="username" поле для входа и поле android:autofillHints="password" для пароля в форме входа. Диалоговое окно сохранения пароля появляется все так же, благодаря сервису автозаполнения Android.