Подмена строкового ресурса в 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) + " ++++++"
    }
}

Там методов больше, но не вижу в них смысла тут, они роли не играют.

Итак, все это собрано в этих ваших интернетах, и там вроде как оно работает. Но у меня не логируется ничего, и собственно подмены нет. Понимаю что скорее всего просто где то затупил, но все-же может у кого будет дельная подсказка или замечание? Спасибо!)


Ответы (0 шт):