0

我的应用程序有一个按钮,可将用户发送到区域设置。我用这段代码做到这一点:

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);

前面的代码适用于每台设备:)

4

1 回答 1

1

正式地,您可能无法修复它。HTC 显然使用您正在运行的特定英雄固件破坏了 SDK。您可以使用android.os.Build来识别您在英雄上并禁用任何导致startActivity()呼叫失败的选项(例如,禁用试图打开这些设置的菜单选项)。

非正式地,尝试通过设置应用程序手动进入该屏幕,并查看 LogCat 输出。您也许可以通过这种方式确定可以触发您寻找的特定屏幕的 Intent(如果存在)。

于 2010-02-03T15:00:01.350 回答