Android9 更改系统默认输入法

    技术2022-07-11  91

    说明

    默认输入法 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; }

     

     

     

    Processed: 0.012, SQL: 9