Android:如何检测语言已更改手机设置

Sar*_*tra 2 android locale

我如何检测我的电话语言是否已更改,例如可以通知我们的facebook应用程序: please wait, we preparing your language

我用myString = Locale.getDefault().getDisplayLanguage();在我的onCreate()

在我的 onCreate()

@Override
    public void onCreate(Bundle savedInstanceState) {
        String myString = Locale.getDefault().getDisplayLanguage();
        if(myString.equals("en"){
            ProgressDialog progressDialog = new ProgressDialog(getApplicationContext());
            progressDialog.setMessage("Please wait, we preparing your language");
            progressDialog.show();
            /*
            it will dismiss until the language has been prepared
             */
        }else{
            //do nothing
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请给我建议,我仍在学习,会努力的。谢谢。

Kar*_*oly 5

将广播侦听器设置为:ACTION_LOCALE_CHANGED

由于“区域设置代表语言/国家/地区/变体组合。区域设置用于更改数字或日期等信息的呈现方式,以适应它们所描述的地区的惯例。”

http://developer.android.com/reference/java/util/Locale.html


Ale*_*ona 5

您可以使用:ACTION_LOCALE_CHANGED

这里是一个例子:

    private BroadcastReceiver mLangReceiver = null;

    protected BroadcastReceiver setupLangReceiver(){

        if(mLangReceiver == null) {

            mLangReceiver = new BroadcastReceiver() {

                @Override
                public void onReceive(Context context, Intent intent) {
                    // do what you want
                }

            };

            IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
            registerReceiver(mLangReceiver, filter);
        }

        return mLangReceiver;
    }
Run Code Online (Sandbox Code Playgroud)


Man*_*ann 2

Locale.getDefault().getLanguage(); 
Run Code Online (Sandbox Code Playgroud)

您可以使用它来获取类似“en”格式的语言。

Locale.getDefault().getDisplayLanguage();返回语言名称,例如“English”而不是“en”。

这也很有用:https ://stackoverflow.com/a/34265899/5515972