I override the locale of my app using:
Locale locale = new Locale("ca");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
But it seems that getRelativeTimeSpanString doesn't work with application context, and instead use the system locale.
Your solution was almost correct.
However, since the strings are loaded from the system resources, you must update the configuration of the system resources. Below is what I did:
(NB: From Jelly Bean MR1 onwards, it is recommended to use
to change the locale rather then setting the member directly.)