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 の出力を確認してください。探している特定の画面が存在する場合は、その画面をトリガーできるインテントをそのように決定できる場合があります。

于 2010-02-03T15:00:01.350 に答える