BiometricPrompt подсказки не локализованы
вопрос
Мы меняем язык внутри приложения, все работает, кроме подсказок в диалоге отпечатков пальцев. Какой бы язык мы ни установили, у нас всегда есть подсказки на английском:
- Коснитесь датчика отпечатков пальцев
- Не опознано
- так далее...
Среда
- Используемый компонент: androidx.biometric.BiometricPrompt
- Используемая версия: 1.0.0.0-alpha04
- Версии устройств /Android, воспроизводимые на: API эмулятора 28
Как устанавливается локаль:
private fun setNewLocaleAndRestart(language: String) {
LocaleManager(this).setNewLocale(language)
//restarting app
val i = Intent(this, SplashScreenActivity::class.java)
startActivity(i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK))
finish()
System.exit(0)
}
class LocaleManager(val context: Context) {
val sharedPreferenceManager = createSharedPreferenceManager(context)
fun setLocale(): Context = updateResources()
fun setNewLocale(language: String): Context {
return updateResources(language)
}
private fun updateResources(l: String? = null): Context {
val language = l ?: sharedPreferenceManager.language
if (language.isBlank()) return context
val locale = Locale(language)
Locale.setDefault(locale)
val res = context.resources
val config = Configuration(res.configuration)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
config.setLocale(locale)
return context.createConfigurationContext(config)
} else @Suppress("DEPRECATION") {
config.locale = locale
res.updateConfiguration(config, res.displayMetrics)
return context
}
}
}
1 ответ
все работает, кроме подсказок в диалоге отпечатков пальцев
Все системные диалоги будут использовать язык, который пользователь установил для устройства. Это включает в себя системные диалоги для биометрии.
Я только что реализовал BiometricManager androidx.biometric:biometric:1.0.1
и смог изменить и локализовать текст для подсказки и для случая использования неправильного отпечатка пальца.
Вам просто нужно определить эти строки в вашем strings.xml, чтобы переопределить те, которые есть в API:
fingerprint_not_recognized
для изменения сообщения об ошибке при использовании неправильного отпечатка пальца. Это определено в FingerprintHelperFragment.java.
fingerprint_dialog_touch_sensor
чтобы изменить подсказку. Это определено в FingerprintDialogFragment.java.
Исправлено в версии BiometricPrompt. androidx.biometric:biometric:1.0.0-alpha04
. Вам просто нужно изменить язык телефона, чтобы изменения отразились.
вот коммит для этого, если вам интересно
Я тоже испытываю это с implementation 'androidx.biometric:biometric:1.0.1@aar'
. Я меняю системный язык на какой-то другой, кроме английского, но он по-прежнему говорит: "Прикоснись к датчику отпечатков пальцев". Есть ли у кого-нибудь решение или объяснение этому?
Это выглядит, как если Android биометрическая библиотека уже поставляется с поддержкой всех языков, но это не похоже на работу. Я даже могу видеть переводы в сгенерированномmerger.xml
в папке сборки Android.
Проверено на моем OnePlus 5T с Android 9/Oxygen 9.0.10.