說明
默認輸入法 QQPinyin。
添加代碼如下
1,添加 PRODUCT_PACKAGES
build/make/target/product/core.mk
PRODUCT_PACKAGES += QQPinyin
2,添加QQPinyin.apk
packages/apps/QQPinyin/QQPinyin.apk
packages/apps/QQPinyin/Android.mk 不用添加庫文件也可以的。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := QQPinyin
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true
LOCAL_PREBUILT_JNI_LIBS:= \
@lib/armeabi/libA3AEECD8.so \
@lib/armeabi/libAgc_v1.so \
@lib/armeabi/libETConverter.android.so \
@lib/armeabi/libawp.so \
@lib/armeabi/libbutterfly.so \
@lib/armeabi/libconscrypt_jni.so \
@lib/armeabi/libencrypt_v00.so \
@lib/armeabi/libsecurity.so \
@lib/armeabi/libsogou_speex_nt_v01.so \
@lib/armeabi/libsogouupdcore.so \
@lib/armeabi/libspeex_nt_v01.so \
@lib/armeabi/libvad-lib.so \
@lib/armeabi/libweibosdkcore.so
LOCAL_CERTIFICATE := PRESIGNED
#LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
#LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/app
include $(BUILD_PREBUILT)
3.配置默認值,如果沒需要添加。
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<string name="default_input_method" translatable="false">com.tencent.qqpinyin/.QQPYInputMethodService</string>
<string name="enabled_input_methods" translatable="false">com.tencent.qqpinyin/.QQPYInputMethodService</string>
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
R.string.default_input_method);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
R.string.enabled_input_methods);
4,切換語言使默認輸入法不改變。
--- a/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
+++ b/frameworks/base/core/java/com/android/internal/inputmethod/InputMethodUtils.java
@@ -138,6 +138,11 @@ public class InputMethodUtils {
final Context context, final boolean checkDefaultAttribute,
@Nullable final Locale requiredLocale, final boolean checkCountry,
final String requiredSubtypeMode) {
+
+ if("com.tencent.qqpinyin".equals(imi.getPackageName())){
+ return true;
+ }
+
if (!isSystemIme(imi)) {
return false;
}