7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法

Android 7.0设置默认输入法参考下面的文章

Android修改默认输入法

切换系统语言之后,系统会默认将输入法切换到Andorid Keyboard(AOSP)

/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java

isSystemImeThatHasSubtypeOf()方法中添加

        if ("com.google.android.leanback.ime".equals(imi.getPackageName())) {
            return true;
        }

因为我默认使用的是Leanback Keyboard所以设置包名com.google.android.leanback.ime

7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法


2018年3月23日更新

发现该问题有了新的解决办法

在AOSP输入法应用中,找到AndroidManifest.xml文件,发现在LatinIME中有一个method文件

7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法

继续往下进入发现在xml/method.xml文件中有一个isDefault属性,继续往下看

7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法


找到values/bools.xml文件,看到属性im_is_default的解释是,当前输入法是否要被设置为当前locale的默认输入法来支持相应的语言。

7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法

也就是说我们可以在每个语言对应的values文件夹下添加bools.xml文件进行默认语言的配置,像这样

7.0 Android系统修改默认输入法后,切换系统语言时输入法自动切到AOSP的解决办法

所以该问题又可以这样来处理,直接将isDefault="false",则所有语言都不会默认使用AOSP输入法,就解决了