android中獲得系統語言


 

String str = Locale.getDefault().getLanguage();
                Log.i("my", str);   

中文為   str ="cn";

英文為  str ="en";

日文為  str ="ja";

。。。。

寫個程序監控設置中語言變化

public class AndroidLanguageActivity extends Activity {
    
    class MyReceiver extends BroadcastReceiver 
    {

        @Override
        public void onReceive(Context context, Intent intent)
        {
            // TODO Auto-generated method stub
            if("Intent.ACTION_LOCALE_CHANGED".equals(intent.getAction()))
            {
                String str = Locale.getDefault().getLanguage();
                Log.i("my", "changed    "+str);
            }
        }
        
    }
    MyReceiver receiver;
    IntentFilter filter;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view  = new TestDrawView(this);
//        view.setBackgroundDrawable(getResources().getDrawable(R.drawable.xx));
        setContentView(view);
        receiver = new MyReceiver();
        filter = new IntentFilter("Intent.ACTION_LOCALE_CHANGED");
       
    }
    
    @Override
    protected void onResume()
    {
        // TODO Auto-generated method stub
        super.onResume();
        registerReceiver(receiver, filter);
        String str = Locale.getDefault().getLanguage();
        Log.i("my", str);
    }

    @Override
    protected void onPause()
    {
        // TODO Auto-generated method stub
        super.onPause();
        unregisterReceiver(receiver);
    }
    
}

 

根據官方文檔指明,注冊廣播在onSume()中,解除注冊unregister(receiver);在onPause()中。

而且如果假設廣播只在本應用中的話推薦使用LocalBroadcastManager,因為它具有一下優點:

1    因廣播數據在本應用范圍內傳播,你不用擔心隱私數據泄露的問題。

2    不用擔心別的應用偽造廣播,造成安全隱患。

3    相比在系統內發送全局廣播,它更高效。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM