AI手机网,短视频直播 硬改改机 一键新机 群控软件 刷机定制

 找回密码
 立即注册
搜索
查看: 2594|回复: 0

Android内置第三方输入法。并设为默认输入法启动做ROM内置.

[复制链接]
发表于 2018-10-17 20:39:01 | 显示全部楼层 |阅读模式
Android内置第三方输入法。并设为默认输入法启动做ROM内置.
Android内置第三方输入法
本篇讲诉如何再安卓源码中内置第三方输入法,并设为默认输入法启动,以及过程中可能引起的一些其他系统Bug处理:

内置输入法关联源码
各第三方输入法ID
以讯飞为例内置方法
设置默认首选第三方输入法引起的系统问题
一、内置输入法关联源码
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

二、各第三方输入法ID
输入法的ID一定要使用正确,否则设置默认启用内置的输入法的时候就会出现很多坑,比如我在内置讯飞的时候在网上查找讯飞输入法ID,写成了com.iflytek.inputmethod/.iFlyIME,导致默认不能开启讯飞浪费了很多时间。以下是整理的各输入法ID的正确值,仅供参考!

讯飞输入法:com.iflytek.inputmethod/.FlyIME
搜狗输入法:com.sohu.inputmethod.sogou/.SogouIME
百度输入法:com.baidu.input/.ImeService
谷歌输入法:com.google.android.inputmethod.pinyin/.PinyinIME
触宝输入法:com.cootek.smartinput5/.TouchPalIME
腾讯输入法:com.tencent.qqpinyin/.QQPYInputMethodService
三、内置讯飞输入法
关于如何内置应用的方法这里就不再过度的记录,具体见[内置应用][http://blog.csdn.net/u014304560/article/details/73470127];

从官网获取讯飞输入法的apk,并内置到系统中
将该apk内置到系统中,安卓mk文件写法如下:
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := FlyIME
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_MODULE_CLASS := APPS
LOCAL_PACKAGE_NAME := FlyIME
LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_APPS)
LOCAL_SRC_FILES := FlyIME.apk
LOCAL_CERTIFICATE := PRESIGNED

LOCAL_PREBUILT_JNI_LIBS := \
            lib/armeabi/libcom_iflytek_inputmethod_bundlesetting.so \
            lib/armeabi/libcom_iflytek_inputmethod_mmp.so \
            lib/armeabi/libdexopt.so \
            lib/armeabi/libMetaVAD-v1.so \
            lib/armeabi/libmsc-v8.so \
            lib/armeabi/libNativeCrashCollect.so \
            lib/armeabi/libsmartaiwrite-jni-v23.so \
            lib/armeabi/libvadLib-v5.so \
            lib/armeabi/libvipfont.so

#LOCAL_MULTILIB := 64

include $(BUILD_PREBUILT)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
3.源代码的修改

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
添加一行:
<string name="default_input_method" translatable="false">com.iflytek.inputmethod.FlyIME</string>
alps/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSecureSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
            stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
                    + " VALUES(?,?);");
       ...
       ...
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
                    R.string.default_input_method);
       ...
       ...
       }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
增加loadStringSetting设置默认输入法一行代码。

四、设置默认首选第三方输入法引起的系统问题
如上设置后可能导致一些系统问题,我就遇到一个,为了这个被加了个通宵的班。所以这里提醒小伙伴们注意下
安卓系统中有设置->安全->屏幕锁定方式->PIN码或密码的方式,点击后有个安全启动的确认页面,如下图:
如图,设置了要求输入PIN码才能启动设备后,手机开机进入系统前会要求验证PIN码或密码,这个可能导致无法调起输入法而不能进入系统,这是因为前面系统安全设置中设置了默认启动第三方的输入法,而开机验证这个过程中是没有办法调用第三方输入法的导致的。目前采取的办法就是设置安全启动默认关闭。如果有其他更好的解决办法,请留言交流。
---------------------
作者:Anotherdgf
来源:CSDN
原文:https://blog.csdn.net/u014304560/article/details/78395103
版权声明:本文为博主原创文章,转载请附上博文链接!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术交流售后群

QQ|小黑屋|手机版|站点找错-建议|AI手机网 |Sitemap



GMT+8, 2024-4-26 10:51 , Processed in 0.139767 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表