Подмена строкового ресурса в android
Пытаюсь подсунуть Resources в Context при запуске приложения, что бы заменить getString на свою реализацию
В активности переопределяю attachBaseContext
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(MyWrapper.wrap(newBase))
}
MyWrapper как простая обертка
object MyWrapper {
fun wrap(baseContext: Context): ContextWrapper = MyContextWrapper(baseContext)
}
Далее следует MyContextWrapper, где я и собираюсь менять ресурсный класс
internal class MyContextWrapper(base: Context) : ContextWrapper(base) {
override fun getResources(): Resources = MyResources(super.getResources())
}
Ну сам MyResources
internal class MyResources(
private val baseResources: Resources
) : Resources(baseResources.assets, baseResources.displayMetrics, baseResources.configuration) {
override fun getText(id: Int): CharSequence{
Log.d("RES", "getText")
return (baseResources.getText(id).toString() + " +++++" ) as CharSequence
}
override fun getText(id: Int, def: CharSequence): CharSequence {
Log.d("RES", "getText")
return (baseResources.getText(id, def).toString() + " ++++") as CharSequence
}
override fun getString(id: Int): String {
Log.d("RES", "getString")
return baseResources.getString(id) + " ++++++"
}
override fun getString(id: Int, vararg formatArgs: Any?): String {
Log.d("RES", "getString")
return baseResources.getString(id, *formatArgs) + " ++++++"
}
override fun getQuantityText(id: Int, quantity: Int): CharSequence {
Log.d("RES", "getQuantityText")
return (baseResources.getQuantityText(id, quantity).toString() + " ++++++") as CharSequence
}
override fun getQuantityString(id: Int, quantity: Int): String {
Log.d("RES", "getQuantityString")
return baseResources.getQuantityString(id, quantity) + " ++++++"
}
override fun getQuantityString(id: Int, quantity: Int, vararg formatArgs: Any?): String{
Log.d("RES", "getQuantityString")
return baseResources.getQuantityString(id, quantity, *formatArgs) + " ++++++"
}
}
Там методов больше, но не вижу в них смысла тут, они роли не играют.
Итак, все это собрано в этих ваших интернетах, и там вроде как оно работает. Но у меня не логируется ничего, и собственно подмены нет. Понимаю что скорее всего просто где то затупил, но все-же может у кого будет дельная подсказка или замечание? Спасибо!)