20

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

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

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

4

5 に答える 5

41

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

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

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

于 2012-10-15T07:43:26.873 に答える
16

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

<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

于 2015-11-30T13:22:24.347 に答える
14

ルートデバイスを使用している場合は、/system/bin/imeユーティリティを使用できます。

インストールされているすべての入力メソッドを一覧表示します。# ime list -a

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

Java側では、Runtime.getRuntime()。exec(...)を使用します。

于 2013-11-07T05:35:33.983 に答える
5

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

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

于 2012-06-14T16:12:14.573 に答える
2
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();
于 2018-10-20T06:19:56.923 に答える