Изменение локали перестало работать в Android 10Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Изменение локали перестало работать в Android 10

Сообщение Anonymous »

Я использовал приведенный ниже код для изменения языкового стандарта в приложении Android (приложение имеет собственные настройки языкового стандарта, которые могут отличаться от языкового стандарта ОС). Код отлично работает до Android 9 (P). В Android 10(Q) перестало работать, ресурсы не обновляются. Я не вижу никаких изменений, связанных с локалью, в примечаниях к выпуску Android 10. Что может сломать этот код в Android 10? Если это что-то известно, может ли кто-нибудь указать мне решение?

Код: Выделить всё

private fun setLocale(context: Context, language: String): Context {
//...persist here. persisting works fine
return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N)
updateResources(context, language)
else
updateResourcesLegacy(context, language)
}

@TargetApi(Build.VERSION_CODES.N)
private fun updateResources(context: Context, language: String): Context {
val locale = Locale(language)
Locale.setDefault(locale)

val configuration = context.resources.configuration
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)

return context.createConfigurationContext(configuration)
}
UPD:
Я обнаружил, что этот код перестал работать после обновления до более новой версии androidx. appcompat:appcompat. Я мог бы сузить круг: он работает в 1.2.0-alpha01 и не работает в 1.2.0-alpha02.
Я вижу в примечаниях к выпуску для 1.2.0-alpha02 было 3 изменения, связанных с контекстом: https://developer.android.com/jetpack/a ... .0-alpha02
< ul>
[*]Безопасно, что базовый контекст всегда является оболочкой (aosp/1194355).
[*]Добавлены некоторые улучшения, позволяющие более разумно изменять конфигурацию базового контекста (aosp/1204543). )
[*]Отключено createConfigurationContext() для Robolectric (aosp/1186218)


Подробнее здесь: https://stackoverflow.com/questions/634 ... android-10
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»