android.settings.INPUT_METHOD_SETTINGS не работает с героем HTC
В моем приложении есть кнопка, которая отправляет пользователя к настройке локали. Я делаю это с этим кодом:
startActivity(new Intent(android.provider.Settings.ACTION_INPUT_METHOD_SETTINGS));
Это отлично работает с некоторыми устройствами, но с HTC Hero я получаю:
02-03 13:59:27.501: INFO/ActivityManager(69): Starting activity: Intent { action=android.settings.INPUT_METHOD_SETTINGS flags=0x10000000 }
02-03 13:59:27.531: DEBUG/AndroidRuntime(1916): Shutting down VM
02-03 13:59:27.531: WARN/dalvikvm(1916): threadid=3: thread exiting with uncaught exception (group=0x40013140)
02-03 13:59:27.531: ERROR/AndroidRuntime(1916): Uncaught handler: thread main exiting due to uncaught exception
02-03 13:59:27.611: ERROR/AndroidRuntime(1916): android.content.ActivityNotFoundException: No Activity found to handle Intent { action=android.settings.INPUT_METHOD_SETTINGS flags=0x10000000 }
02-03 13:59:27.611: ERROR/AndroidRuntime(1916): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1529)
02-03 13:59:27.611: ERROR/AndroidRuntime(1916): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1499)
02-03 13:59:27.611: ERROR/AndroidRuntime(1916): at android.app.Activity.startActivityForResult(Activity.java:2669)
02-03 13:59:27.611: ERROR/AndroidRuntime(1916): at android.app.Activity.startActivity(Activity.java:2713)
РЕДАКТИРОВАТЬ: РЕШЕНИЕ!
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
ComponentName com = new ComponentName("com.android.settings", "com.android.settings.LanguageSettings");
intent.setComponent(com); startActivity(intent);
Предыдущий код будет работать на каждом устройстве:)
1 ответ
Официально вы, вероятно, не можете это исправить. HTC явно сломал SDK с конкретной прошивкой Hero, которую вы используете. Ты можешь использовать android.os.Build
определить, что вы находитесь на героя и отключить любую опцию, которая приводит к провалу startActivity()
вызов (например, отключить выбор меню, который пытается открыть эти настройки).
Неофициально попробуйте перейти на этот экран вручную через приложение "Настройки" и взгляните на вывод LogCat. Возможно, вы сможете определить таким образом Intent, который может вызвать конкретный экран, который вы ищете, если он существует.