如何改变应用程序的语言环境后,即可获取设备的语言环境(How to get the device l

2019-07-18 08:58发布

我改变基于用户选择的应用程序的语言环境。 独立设备的语言环境。

运用

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());
    }

但我想知道会有怎样的设备区域也。

当我试图让这个我总是让我已经设置为应用程序的语言环境。

例如:applictaion 英语和设备是中文的 。 我总是让英语

为获得使用的语言环境,

选项1。

String locale = context.getResources().getConfiguration().locale.getCountry();

选项2。

String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry();

任何帮助将不胜感激!

Answer 1:

我绝对不知道该如何便携本是不同的设备:

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();
}

如果你想在全国部分:persist.sys.country



Answer 2:

我问类似的东西,发现这个答案,对不起,如果是晚:

要找到系统区域设置使用:

defaultLocale = Resources.getSystem().getConfiguration().locale;

它得到系统区域,无论哪个默认区域设置为应用程序/活动。



Answer 3:

对于那些利用谁是Daniel Fekete的解决方案是:

Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"});
String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine();
exec.destroy();

要知道,语言环境可能会在最新的Android API(+21) ! 而是采用persist.sys.language使用persist.sys.locale

exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.locale"});
locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine();
exec.destroy();


文章来源: How to get the device locale after changing the application locale