更改应用程序区域设置后如何获取设备区域设置

And*_*Dev 9 android location locale device

我正在根据用户选择更改应用程序区域设置.独立于设备区域设置.

运用

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());
    }
Run Code Online (Sandbox Code Playgroud)

但我想知道设备区域设置也是什么.

当我试图得到这个时,我总是得到我设置为应用程序的语言环境.

例如:应用程序为ENGLISH,设备为中文.我总是得英语.

用于获取区域设置,

选项1.

String locale = context.getResources().getConfiguration().locale.getCountry();
Run Code Online (Sandbox Code Playgroud)

选项2.

String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry();
Run Code Online (Sandbox Code Playgroud)

任何帮助将受到高度赞赏!

Bep*_*i's 7

我问了类似的东西并找到了答案,对不起,如果已经晚了:

要查找系统区域设置,请使用:

defaultLocale = Resources.getSystem().getConfiguration().locale;
Run Code Online (Sandbox Code Playgroud)

无论为app/activity设置了哪个默认语言环境,它都会获得系统区域设置.


Dan*_*ete 6

我绝对不确定这对于不同的设备有多便携:

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();
}
Run Code Online (Sandbox Code Playgroud)

如果你想要国家部分:persist.sys.country