android中获得系统语言

简介: String str = Locale.getDefault().getLanguage();                Log.i("my", str);    中文为   str ="cn"; 英文为  str ="en"; 日文为  str ="ja"; 。

 

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    相比在系统内发送全局广播,它更高效。

 

 

目录
相关文章
|
SQL 存储 数据挖掘
深入了解SQLite3命令:小巧强大的数据库工具
SQLite3是轻量级数据库工具,适用于嵌入式设备和数据分析。它提供交互式shell,无需服务器,易于部署。常用命令如`.schema`显示表结构,`.mode`设置输出格式。示例包括创建数据库`mydatabase.db`,创建表`users`,插入数据并查询。注意动态类型系统、性能限制及SQL注入安全。适合轻量级数据存储和管理。
|
存储 Java Linux
SQLite3数据库的安装与使用教程
SQLite3数据库的安装与使用教程
|
API 开发工具 Android开发
调用Android原生@SystemApi、@Hide方法
调用Android原生@SystemApi、@Hide方法
1006 1
|
数据库连接 API 数据库
SQLite3 数据库 C语言API 打开函数sqlite3_open 详解
SQLite3 数据库 C语言API 打开函数sqlite3_open 详解
693 0
|
JSON 前端开发 Java
Java对象与json字符串的转换
前后台传递通常会用到Json来转换,因此java对象与json字符串之间的转换使用变得很频繁。
2673 0
|
C语言
ASCII编码的52个大小写字母
ASCII编码的52个大小写字母
13787 1
|
Windows
windows下不重启电脑如何能更新环境变量
windows下不重启电脑如何能更新环境变量
1321 0
|
Ubuntu Linux
Ubuntu 一键安装配置搜狗输入法
buntu自带的汉字输入法太鸡肋了,就想安装个国产的,发现搜狗的就不错,去官网下载最新版太麻烦了,而且也没太有必要,所以下面简单写一下安装配置步骤
769 0
|
机器学习/深度学习 Android开发 索引
Android国际化:资源+初始化+系统适配
资源匹配 字符资源values、布局资源layout、图片资源drawable,都可以在文件夹后添加国家后缀,放对应语言的资源。则系统会根据设置的语言自动去找对应语言的资源,如果没有设置的系统语言资源,则会拿去拿默认资源(values、layout、drawable文件夹下)。
|
Android开发 数据格式 XML
Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数
  1、主要布局    2、代码实现 1 package com.webview.demo; 2 3 import android.
2778 0