How to get the device locale after changing the application locale
android, device, locale, location
Solution
I am absolutely unsure how portable this is to different devices:
try {
Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"});
String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine();
exec.destroy();
Log.e("", "Device locale: "+locale);
} catch (IOException e) {
e.printStackTrace();
}
And if you want the country part: persist.sys.country
Problem
I am changing the application locale based on user choice. Independent of device locale. using ``` public void setDefaultLocale(Context context, String locale) { Locale appLoc = new Locale(locale); Locale.setDefault(appLoc); Configuration appConfig = new Configuration(); appConfig.locale = appLoc; context.getResources().updateConfiguration(appConfig, context.getResources().getDisplayMetrics()); } ``` But I want to know what will be the device locale also. When I am trying to get this I always getting the locale which I have set to application. ex: applictaion is in ENGLISH and device is in CHINESE. I am always getting english. for getting locale using, option 1. ``` String locale = context.getResources().getConfiguration().locale.getCountry(); ``` option 2. ``` String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry(); ``` Any help will be highly appreciated!!!