RK3566&3568修改默认输入法为第三方输入法

文章目录

  • 前言
  • 一、首先获取输入法的包名
    • 1.使用ime list命令查看输入法包名类名
  • 二、输入法内置进系统
    • 1.放入客制化目录
  • 三、修改环境变量
  • 四、设置为默认输入法
  • 五、测试输入法是否为默认
  • 总结


前言

需求:因为安卓自带的AOSP键盘无法输入中文,所以内置一个第三方输入法并直接修改为默认的输入法来解决问题


提示:以下是本篇文章正文内容,下面案例可供参考

一、首先获取输入法的包名

在将输入法内置到系统之前,可以通过手动安装的方式,获取输入法的包名和类名,我这里是使用搜狗输入法。

1.使用ime list命令查看输入法包名类名

adb shell ime list -s

得到如下两个输入法的包名和类名
在这里插入图片描述
可以看到com.sohu.inputmethod.sogou/.SogouIME就是我们要的,
ps:有个坑:一定要完整的带上/.而不是直接com.sohu.inputmethod.sogou.SogouIME因为这是有关权限的服务,你填错代码就无效了…

二、输入法内置进系统

1.放入客制化目录

将输入法apk文件添加至vendor\rockchip\common\apps目录下,并修改.mk文件,各个厂商的内置方式都不同,我这里就不演示了。

三、修改环境变量

在目录frameworks\base\packages\SettingsProvider\res\values\defaults.xml
添加环境变量config_default_input_method,指定变量值为输入法的包名和类名。修改内容如下:

    <!-- add by LQX -->
    <!--输入法的列表-->
    <string name="enabled_input_methods" translatable="false">com.android.inputmethod.latin/.LatinIME:com.sohu.inputmethod.sogou/.SogouIME</string>
    <!--默认输入法-->
    <string name="config_default_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME</string>
    <!-- end, add by LQX -->

四、设置为默认输入法

在设置源码中,指定config_default_input_method为要设置的输入法。修改内容如下:

    private void loadSecureSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
            stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
                    + " VALUES(?,?);");		
			.....
				
            loadIntegerSetting(stmt, Settings.Secure.SLEEP_TIMEOUT,
                    R.integer.def_sleep_timeout);
            //By-LQX
            loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
            loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.config_default_input_method);
            //By-LQX
            /*
             * IMPORTANT: Do not add any more upgrade steps here as the global,
             * secure, and system settings are no longer stored in a database
             * but are kept in memory and persisted to XML.
             *
             * See: SettingsProvider.UpgradeController#onUpgradeLocked
             */
        } finally {
            if (stmt != null) stmt.close();
        }
    }

五、测试输入法是否为默认

adb命令查看系统默认输入法

adb shell settings get secure default_input_method

在这里插入图片描述

总结

至此教程结束。

你可能感兴趣的:(android,java,adb)