InputMethodService
ユーザーが自分のアプリにいる場合にのみ作成する必要があるサブクラスがあるため、ユーザーが Android 言語設定を介してそれを有効にすると、キーボードはすぐに非アクティブ化され、デフォルトのキーボードに戻されます。私のサブクラスは次のようになります:
public class CustomIME extends InputMethodService {
@Override
public void onCreate() {
super.onCreate();
// do onCreate() stuff and find current activity
if(currentActivity != myActivity){
switchBackToDefaultKeyboard(defaultKeyboard);
}
}
public void switchBackToDefaultKeyboard(IME ime) {
try {
switchInputMethod(ime.getId());
} catch (Exception e) {
DebugLog.e("Switching failed"); // this always fails when called from onCreate()
}
}
}
コメントに書いたように、InputMethodService.switchInputMethod()
内からキーボードを切り替えようとすると、メソッドは常に例外をスローしますonCreate()
。
例外メッセージは次のとおりです。
java.lang.SecurityException: Using null token requires permission android.permission.WRITE_SECURE_SETTINGS