インストールされているキーボードをプログラムで(手動で設定セクションに移動せずに)切り替える方法はありますか?
私の要件は、ユーザーに電話にインストールされているすべてのキーボードが表示され、希望するものに切り替えるための選択ダイアログが表示されることです。
(基本的に、彼を設定ページに転送するためのステップを削減したいと思います)
インストールされているキーボードをプログラムで(手動で設定セクションに移動せずに)切り替える方法はありますか?
私の要件は、ユーザーに電話にインストールされているすべてのキーボードが表示され、希望するものに切り替えるための選択ダイアログが表示されることです。
(基本的に、彼を設定ページに転送するためのステップを削減したいと思います)
このコードは、要件を満たします。
InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();
Commonswareが彼の答えで指摘しているように、これをユーザーの背後で行う方法はありません。
アプリにシステム権限があり、権限がある場合
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
プログラムでキーボードを有効にし、ユーザーの知識や介入なしにデフォルトのキーボードにすることで、現在のキーボードとして設定できます。
//get the old default keyboard in case you want to use it later, or keep it enabled
String oldDefaultKeyboard = Settings.Secure.getString(resolver, Setting.Secure.DEFAULT_INPUT_METHOD);
//enable your keyboard
Settings.Secure.putString(resolver, Settings.Secure.ENABLED_INPUT_METHODS, "com.my.keyboard/.full.path");
//set your keyboard as the new default keyboard
Settings.Secure.putString(resolver, Settings.Secure.DEFAULT_INPUT_METHOD, "com.my.keyboard/.full.path");
ENABLED_INPUT_METHODS
':'で区切られたキーボードのリストをに提供することにより、複数のキーボード(デフォルトのキーボードや独自のキーボードなど)を有効にできます。ドキュメントを参照してください
を呼び出すことime list -a
により、キーボードの完全なパッケージとパスIDを確認できます。adb shell
ルートデバイスを使用している場合は、/system/bin/ime
ユーティリティを使用できます。
インストールされているすべての入力メソッドを一覧表示します。# ime list -a
Googleのキーボードをデフォルトとして設定します。
# ime set com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
Java側では、Runtime.getRuntime()。exec(...)を使用します。
インストールされているキーボードをプログラムで(設定セクションに移動せずに)切り替える方法はありますか?
幸いなことに、セキュリティ上の理由から、いいえ。アプリが使用する入力方式エディターを指示できる場合、マルウェアは入力方式エディターをキーロガーに変更します。
import android.content.Intent;
import android.view.inputmethod.InputMethodManager;
// To enable keyboard
startActivity(new Intent("android.settings.INPUT_METHOD_SETTINGS"));
// To activate the keyboard
InputMethodManager imeManager = (InputMethodManager)
getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();