美文网首页
[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