как установить IME по умолчанию при портировании Android? - PullRequest
4 голосов
/ 28 апреля 2011
  • в build / target / product / generic.xml Я добавляю PinyinIME, чтобы добавить его в мою сборку.
  • в make-файле Я устанавливаю CUSTOM_LOCALES:= zh_CN en_US и ADDITIONAL_BUILD_PROPERTIES := persist.sys.timezone=Asia/Shanghai persist.sys.language=zh persist.sys.country=CN, чтобы сделать только США иCN доступен и установите CN по умолчанию.

Но IME телефона по умолчанию все еще является LatinIME, хотя языком по умолчанию является CN.В PinyinIME values-zh/bools.xml содержит <bool name="im_is_default">true</bool>

Как достичь своей цели, пожалуйста?

1 Ответ

3 голосов
/ 04 мая 2011

Обход в соответствии с http://hi.baidu.com/wishwingliao/blog/item/65a2d03f7dde8dd17d1e71ec.html. в frameworks \ base \ core \ res \ res \ values ​​\ config.xml, добавьте как показано ниже

<string name="config_default_input_method">com.android.inputmethod.pinyin/.PinyinIME</string>

в frameworks \ base \ services \ java\ com \ android \ server \ InputMethodManagerService.java, добавьте следующее в buildInputMethodListLocked ()

String defaultIme = Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);
    //leo

    if ( defaultIme == null )
    {
        final Resources res = mContext.getResources();
        try
        {
            //frameworks\base\core\res\res\values\config.xml
            String myIME = res.getString( com.android.internal.R.string.config_default_input_method );
            if ( myIME != null && myIME.length() > 0 )
            {
               Settings.Secure.putString( mContext.getContentResolver(),
                        Settings.Secure.DEFAULT_INPUT_METHOD,
                        myIME );
            }
        }

        catch ( Exception e )
        {
        }
    }
...