web-dev-qa-db-ja.com

プログラムでキーボードプロファイルを切り替える

インストールされているキーボードをプログラムで(手動で設定セクションに移動せずに)切り替える方法はありますか?

私の要件は、電話にインストールされているすべてのキーボードがユーザーに表示され、希望するものに切り替えるための選択ダイアログが表示されることです。

(基本的に、彼を設定ページに転送するためのステップを削減したいと思います)

15
rajankz

このコードは、要件を満たします。

InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
imeManager.showInputMethodPicker();

Commonswareが彼の答えで指摘しているように、ユーザーの背後でこれを行う方法はありません。

30
Robert

アプリにシステム権限があり、権限がある場合

<uses-permission Android:name="Android.permission.WRITE_SECURE_SETTINGS" />

プログラムでキーボードを有効にし、ユーザーの知識がなくてもデフォルトのキーボードにすることで、現在のキーボードとして設定できますOR介入!

//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に提供することにより、複数のキーボード(デフォルトのキーボードや独自のキーボードなど)を有効にできます。 docs を参照してください

ime list -aからadb Shellを呼び出すことにより、キーボードの完全なパッケージとパスIDを確認できます。

13
kpninja12

あなたがroot化されたデバイスを持っているなら、あなたは/system/bin/imeユーティリティを使うことができます。

インストールされているすべての入力方式を一覧表示します:# ime list -a

Googleのキーボードをデフォルトとして設定します。
# ime set com.google.Android.inputmethod.latin/com.Android.inputmethod.latin.LatinIME

On Java side use Runtime.getRuntime()。exec(...)

12

インストールされているキーボードをプログラムで(設定セクションに移動せずに)切り替える方法はありますか?

幸いなことに、セキュリティ上の理由から、いいえ。アプリが使用する入力方式エディターを指示できる場合、マルウェアは入力方式エディターをキーロガーに変更します。

5
CommonsWare
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();
0
Darkman
    InputMethodManager imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE);
    imeManager.showInputMethodPicker();

このコードは、デフォルトのキーボードを変更するようにユーザーに促します

0
Andevel