美文网首页
[Mtk][M0]输入法默认操作

[Mtk][M0]输入法默认操作

作者: 灰灰手记 | 来源:发表于2017-01-18 16:37 被阅读72次

    做了一年多的ROM定制开发工作,项目上时常会碰到客户要求预置第三方输入法,或者默认勾选某个输入法,甚至默认使用某个输入法的需求。

    默认勾选:就是在所有输入法列表哪里默认勾选某个输入法,勾选中之后,它才会出现在输入法选择的Dialog中。
    默认使用:就是在需要输入文本时,默认弹出来的那个输入法。

    一旦涉及到默认勾选,或者默认使用,那就要知道那个输入法的 PackageName 和 ServiceName 了。不管熟不熟悉输入法知识,只要会用DDMS的强大功能,那么 PackageName 就很好搞到了。而这个 ServiceName 可能就让很多不熟悉输入法开发的人懵圈了。

    简单粗暴的方法:反编译,分析 AndroidManifast.xml 文件。

    Apk反编译,AndroidManifast 文件一般都能完整的拿到,这个时候,只需要找 Service 节点即可。

    当然,实际搜Service可能会出来好多结果,一般这个 Service 会有如下几个特点:
    1、会申请 android.permission.BIND_INPUT_METHOD 权限;
    2、会有个Action:android.view.InputMethod;
    3、会有meta-data,里面会指定name:android.view.im,以及一个 resource。

    以触宝输入法为例:

    <service android:name="com.cootek.smartinput5.TouchPalIME" 
        android:permission="android.permission.BIND_INPUT_METHOD">
        <intent-filter>
            <action android:name="android.view.InputMethod"/>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
        <meta-data android:name="android.view.im" 
            android:resource="@xml/touchpal_method"/>
    </service>
    

    找到这个 Service 之后,接下来就是进行默认操作了。


    ** 以触宝输入法为例 **
    ** 默认勾选:Settings.Secure.ENABLED_INPUT_METHODS **
    在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 文件加入如下代码:

    loadSetting(
            stmt, 
            Settings.Secure.ENABLED_INPUT_METHODS,
            "com.cootek.smartinputv5/com.cootek.smartinput5.TouchPalIME"
    );
    

    ** 默认使用:Settings.Secure.DEFAULT_INPUT_METHOD **
    在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 文件加入如下代码:

    loadSetting(
            stmt, 
            Settings.Secure.DEFAULT_INPUT_METHOD,
            "com.cootek.smartinputv5/com.cootek.smartinput5.TouchPalIME"
    );
    

    相关文章

      网友评论

          本文标题:[Mtk][M0]输入法默认操作

          本文链接:https://www.haomeiwen.com/subject/qsohvttx.html