我正在实现一个使用本机语言设置的应用程序,可以从以下位置访问: 菜单>设置>语言与键盘>选择语言>区域设置
我也可以使用意图直接打开Locale页面,该意图使用以下代码列出语言:
Intent languageIntent = new Intent(Intent.ACTION_MAIN);
languageIntent.setClassName("com.android.settings", "com.android.settings.LocalePicker");
activity.startActivity(languageIntent);
^ - 代码余额:Change language settings (locale) for the device
这适用于Honeycomb之前的版本。但是,Honeycomb的设置左侧的导航区域很小,如下所示:
当我执行上面的代码时,我收到了这个错误:
Starting: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.LocalePicker } from pid 24294
FATAL EXCEPTION: main
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.settings/com.android.settings.LocalePicker}; have you declared this activity in your AndroidManifest.xml?
知道为什么会这样吗?如果我将“com.android.settings.LocalePicker”更改为“com.android.settings.Settings”,它将打开设置页面到您上次选择的任何设置,但如果我尝试将类名更改为:“com .android.settings.Settings.LocalePicker“它再次爆炸。以下是我正在使用的一些修改后的代码,直到此问题得到解决:
Intent languageIntent = new Intent(Intent.ACTION_MAIN);
int currentApiVersion = android.os.Build.VERSION.SDK_INT;
final int HONEYCOMB = 11;
if (currentApiVersion < HONEYCOMB) // "HONEYCOMB" should be replaced with android.os.Build.VERSION_CODES.HONEYCOMB, but version code 'honeycomb' is not supported...
{
languageIntent.setClassName("com.android.settings", "com.android.settings.LocalePicker");
}
else
{
languageIntent.setClassName("com.android.settings", "com.android.settings.Settings");
}
activity.startActivityForResult(languageIntent, WtgActivity.LANGUAGE_CHANGE_REQUEST);
根据版本号执行不同的运行代码并不理想,所以如果有人知道如何解决这个问题,我将不胜感激。
谢谢!
答案 0 :(得分:4)
试试这个:
Intent languageIntent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(languageIntent);