Я реализую приложение, которое использует настройки родного языка, к которым можно получить доступ из:
Меню> Настройки> Язык и клавиатура> Выбрать язык> Язык
Я также могу открыть страницу Locale напрямую, используя намерение, в котором перечислены языки, используя следующий код:
Intent languageIntent = new Intent(Intent.ACTION_MAIN);
languageIntent.setClassName("com.android.settings", "com.android.settings.LocalePicker");
activity.startActivity(languageIntent);
^ - код кредита: Изменение языковых настроек (локали) для устройства
Отлично работает на версиях до 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);
Запуск кода, который делает что-то другое в зависимости от номера версии, не идеален, поэтому, если кто-нибудь знает, как это исправить, я был бы признателен.
Спасибо!